Digital image color plane compression

ABSTRACT

An example embodiment may involve obtaining an a×b pixel macro-cell from an input image. The a×b pixel macro-cell may contain 4 non-overlapping m×n pixel cells. The a×b pixels in the a×b pixel macro-cell may have respective color values and may be associated with respective object type tags. The example embodiment may also include selecting a compression technique to either (i) compress the a×b pixel macro-cell as a whole, or (ii) compress the a×b pixel macro-cell by compressing each of the 4 non-overlapping m×n pixel cells separately. The example embodiment may further include compressing the a×b pixel macro-cell according to the selected compression technique, and writing a representation of the compressed a×b pixel macro-cell to a computer-readable output medium.

BACKGROUND

In recent years, various types of printing devices have become popularfor both business and consumer use. In addition to traditional black andwhite printers, color printers, scanners, copiers, fax machines, andother components are now common. Multi-function peripherals (MFPs), thatsupport two or more of these operations, are also widely available. Asthese devices have grown more prevalent, they are being used forprocessing of more sophisticated and complicated documents.

SUMMARY

A first example embodiment may involve obtaining an m×n pixel cell froman input image. The input image may contain more than m×n pixels, andeach of the m×n pixels in the m×n pixel cell may be associated with atleast one color value. The first example embodiment may also involve,possibly based on the m×n pixel cell, obtaining an m×n attribute cell.Elements of the m×n attribute cell may be associated in a one-to-onefashion with respective pixels in the m×n pixel cell, and the elementsmay identify respective control data related to their associated pixels.The first example embodiment may further involve compressing the m×npixel cell in a lossy fashion, and the m×n attribute cell in a losslessfashion. Compression of the m×n pixel cell may be based on at least partof the m×n attribute cell. The first example embodiment may additionallyinvolve writing an interleaved representation of the compressed m×npixel cell and the compressed m×n attribute cell to an output medium.

A second example embodiment may involve obtaining an a×b pixelmacro-cell from an input image. The a×b pixel macro-cell may contain 4non-overlapping m×n pixel cells, where the a×b pixels in the a×b pixelmacro-cell have respective color values and are associated withrespective object type tags. The second example embodiment may alsoinvolve, possibly based on the respective color values and therespective object type tags, selecting a compression technique to either(i) compress the a×b pixel macro-cell as a whole, or (ii) compress thea×b pixel macro-cell by compressing each of the 4 non-overlapping m×npixel cells separately. The second example embodiment may furtherinvolve compressing the a×b pixel macro-cell according to the selectedcompression technique. The second example embodiment may additionallyinvolve writing a representation of the compressed a×b pixel macro-cellto a computer-readable output medium.

A third example embodiment may involve obtaining an a×b pixel macro-cellfrom an input image with one or more color planes, and an a×b attributemacro-cell. The a×b pixel macro-cell may contain 4 non-overlapping m×npixel cells and the a×b attribute macro-cell may contain 4non-overlapping m×n attribute cells. The a×b pixels in the a×b pixelmacro-cell may be associated with respective color values, and elementsof the a×b attribute macro-cell may be associated in a one-to-onefashion with respective pixels in the a×b pixel macro-cell. The thirdexample embodiment may also include determining 4 attribute-plane outputvalues associated respectively with the 4 non-overlapping m×n attributecells. The third example embodiment may further include determining 1 to4 color-plane output values for the non-overlapping m×n pixel cells. Thethird example embodiment may additionally include writing an interleavedrepresentation of the 4 attribute-plane output values and the determinedcolor-plane output values to a computer-readable output medium.

A fourth example embodiment may include a non-transitory,computer-readable storage medium, having stored thereon programinstructions that, upon execution by a computing device, cause thecomputing device to perform operations in accordance with the first,second, and/or third example embodiments.

A fifth example embodiment may include a computing device containing atleast a processor and data storage. The data storage may include programinstructions that, when executed by the processor, cause the computingdevice to perform operations in accordance with the first, second,and/or third example embodiments.

These as well as other aspects, advantages, and alternatives will becomeapparent to those of ordinary skill in the art by reading the followingdetailed description with reference where appropriate to theaccompanying drawings. Further, it should be understood that thedescription provided in this summary section and elsewhere in thisdocument is intended to illustrate the claimed subject matter by way ofexample and not by way of limitation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a printing device, according to example embodiments.

FIG. 2 is a block diagram illustrating computing components of aprinting device, according to example embodiments.

FIG. 3 is a block diagram illustrating various data paths involving aprinting device, according to example embodiments.

FIG. 4 depicts an image that may be contained in an electronic document,according to example embodiments.

FIG. 5 depicts an attribute array, according to example embodiments.

FIG. 6 depicts a document processing pipeline, according to exampleembodiments.

FIG. 7 depicts a macro-cell containing four cells, according to exampleembodiments.

FIG. 8 depicts a color plane decision tree, according to exampleembodiments.

FIG. 9 depicts an attribute plane decision tree, according to exampleembodiments.

FIG. 10 depicts pseudo-code for interleaved encoding, according toexample embodiments.

FIG. 11A depicts cells of four planes, according to example embodiments.

FIG. 11B depicts the cells of FIG. 11A interleaved on an output medium,according to example embodiments.

FIG. 12A depicts cells of four planes, according to example embodiments.

FIG. 12B depicts the cells of FIG. 12A interleaved on an output medium,according to example embodiments.

FIG. 13 is a flow chart, according to example embodiments.

FIG. 14 is another flow chart, according to example embodiments.

FIG. 15 is yet another flow chart, according to example embodiments.

DETAILED DESCRIPTION OF THE DRAWINGS

Example methods and systems are described herein. Other exampleembodiments or features may further be utilized, and other changes maybe made, without departing from the scope of the subject matterpresented herein. In the following detailed description, reference ismade to the accompanying figures, which form a part thereof.

The example embodiments described herein are not meant to be limiting.Thus, aspects of the present disclosure, as generally described hereinand illustrated in the figures, can be arranged, substituted, combined,separated, and designed in a wide variety of different configurations,all of which are explicitly contemplated herein.

1. Introduction

Printing technology has evolved over the last 30-plus years from simpledot-matrix-based output devices producing only black and white images totoday's advanced laser-based printing devices that can producehigh-resolution color images. Additionally, modern printing devices mayalso function as copiers, scanners, and fax machines. To do so, they maybe able to store numerous electronic documents that are queued forprinting or faxing, or that have been scanned. Thus, many printingdevices are specialized forms of computing devices that may include, forexample, one or more processors, data storage, and input/outputinterfaces.

Regardless of whether a printing device is used in a residence, abusiness, or in another type of location, the printing device may be ashared resource that can be communicatively coupled to various othercomputing devices. Consequently, in some environments, the storagerequirements of a printing device may be quite high, as numerouscomputing devices may be transmitting electronic documents to theprinting device for printing. Typically, a printing device will print,copy, fax, and/or scan one electronic document at a time, in afirst-come-first-served fashion. Therefore, the printing device maystore a potentially large number of electronic documents that arewaiting to be serviced. Additionally, some electronic documents, such asoverlay documents containing background images or logos, may be storedin a printing device indefinitely, as these electronic documents may beapplied to multiple print jobs.

Since the cost of data storage (e.g., memory such as random accessmemory (RAM), solid-state memory, hard-drive memory, and/or flashmemory) can be expensive, it may be beneficial to compress the storedelectronic documents, in order to reduce the data storage requirementsof the printing device. Additionally, since some electronic documentsmay be transferred to and/or from the printing device and a computingdevice, compressing these electronic documents may make transfers fasterand use less network capacity.

Moreover, since print jobs may be large (e.g., a print job may includeone or more electronic documents encompassing hundreds of pages),compressing queued print jobs saves short-term storage space before eachjob is printed. In addition, users may want to save print jobs inlong-term storage for printing at a later time. Thus, compressing printjobs may allow more print jobs to be saved. Furthermore, the act ofstoring and retrieving large print jobs from long-term memory can beslow, but it may be expedited by compressing the print jobs to make themsmaller in size.

2. Example Printing Device

FIG. 1 depicts an example printing device 100. Printing device 100 maybe configured to print partially-stored and/or fully-stored electronicdocuments on various types of physical output media. These output mediainclude, but are not limited to, various sizes and types of paper,overhead transparencies, and so on. Printing device 100 may beinterchangeably referred to as a “printer.”

Printing device 100 may serve as local peripheral to a computing device,such as a personal computer, a server device, a print server, etc. Inthese cases, printing device 100 may be attached to the computing deviceby cable, such as a serial port cable, parallel port cable, UniversalSerial Bus (USB) cable, Firewire (IEEE 1394) cable, or High-DefinitionMultimedia Interface (HDMI) cable. Thus, the computing device may serveas a source of electronic documents for printing device 100.

On the other hand, printing device 100 may include a wireline orwireless network interface, such as an Ethernet or 802.11 (Wifi)interface. So arranged, printing device 100 may serve as a printingdevice for any number of computing devices that can communicate withprinting device 100 over a network. In some embodiments, printing device100 may serve as both a local peripheral and a networked printer at thesame time. In order to use printing device 100, computing devices mayinstall one or more printer drivers. These printer drivers may includesoftware components that convert the electronic documents to be printedfrom various local representations stored on the computing devices toone or more representations supported by printing device 100.

Regardless, printing device 100 may be considered to be a non-generictype of computing device, and may carry out both printing-related andnon-printing related tasks. For instance, printing device 100 may alsoinclude copier, fax, and scanner functions. In some embodiments,printing device 100 may use a scanning unit to facilitate copier and/orfax functions. For instance, printing device 100 may scan a physicaldocument into an electronic format, and then print the resultingelectronic document to provide a copy, and/or transmit the resultingelectronic document via a telephone interface to provide a faxoperation. Additionally, printing device 100 may be able to receive afaxed electronic document via a telephone interface, and then compressand store a representation of this electronic document.

In order to support its various capabilities, printing device 100 mayinclude a document feeder/output tray 102, paper storage 104, userinterface 106, scanning element 108, and chassis 110. It should beunderstood that printing devices may take on a wide variety of forms.Therefore printing device 100 may include more or fewer components thandepicted in FIG. 1, and/or components arranged in a different fashionthan depicted in FIG. 1.

Document feeder/output tray 102 may hold physical documents (e.g., astack of one or more sheets of paper) that are to be scanned, copied orfaxed. Advantageously, document feeder/output tray 102 may allowprinting device 100 to automatically feed multiple physical documentsfor processing by printing device 100 without requiring manualintervention. Document feeder/output tray 102 may also include one ormore separate output trays for holding physical documents that have beenprocessed by printing device 100. These may include physical documentsthat have been scanned, copied or faxed by printing device 100, as wellas physical documents that have been produced by, e.g., the fax and/orcopying functions of printing device 100.

Paper storage 104 may include trays and/or feeding elements for varioustypes of physical media. For instance, paper storage 104 may includeseparate trays for 8.5×11 inch paper, A4 paper, letterhead paper,envelopes, and so on. For any operation of printing device 100 thatinvolves outputting physical media (e.g., printing, copying, and/orreceiving a fax), paper storage 104 may supply the physical media.

User interface 106 may facilitate the interaction of printing device 100with a human or non-human user, such as to receive input from a user andto provide output to the user. Thus, user interface 106 may includeinput components such as a keypad, keyboard, touch-sensitive orpresence-sensitive panel, joystick, microphone, still camera and/orvideo camera. User interface 106 may also include one or more outputcomponents such as a display screen (which, for example, may be combinedwith a presence-sensitive panel), a cathode ray tube (CRT), a liquidcrystal display (LCD), a light emitting diode (LED) based display, adisplay using digital light processing (DLP®) technology, a light bulb,and/or one or more other similar devices, now known or later developed.User interface 106 may also be configured to be able to generate audibleoutput(s), via a speaker, speaker jack, audio output port, audio outputdevice, earphones, and/or other similar devices, now known or laterdeveloped in the future.

Scanning element 108 may be a glass panel below which a movable lightsource operates to scan physical media placed on top of the glass panel.Alternatively, a digital camera below the glass panel may “scan” thephysical media placed on top of the glass panel by taking a picture ofthe physical media. Images of scanned physical media may be stored indata storage associated with printing device 100.

Chassis 110 may include a physical housing that contains and/orinterconnects various components of printing device 100, such asdocument feeder/output tray 102, paper storage 104, user interface 106,and scanning element 108. Additionally, chassis 110 may house othercomponents not shown in FIG. 1. For example, chassis 110 may contain oneor more toner cartridges, liquid ink jets, belts, rollers, and/or powersupplies. Further, chassis 110 may include communication interfaces,such as a wireline and/or wireless network interfaces, a telephonyinterface (e.g., a RJ45 jack), a USB interface, a BLUETOOTH® interface,a card reader port, etc.

Moreover, as printing device 100 may be based on general-purpose and/orspecially-designed computing device components, chassis 110 may alsohouse some or all of these components. To that point, FIG. 2 depicts anexample embodiment 200 of computing device components (e.g., functionalelements of a computing device) that may be included in printing device100.

Computing device components 200 may include a processor 202, memory 204,and input/output unit 206, all of which may be coupled by a system bus208 or a similar mechanism. Processor 202 may include one or morecentral processing units (CPUs), such as one or more general purposeprocessors and/or one or more dedicated processors (e.g., applicationspecific integrated circuits (ASICs) or digital signal processors(DSPs), etc.).

Memory 204, in turn, may comprise volatile and/or non-volatile datastorage and can be integrated in whole or in part with processor 202.Memory 204 may store program instructions, executable by processor 202,and data that are manipulated by these instructions to carry out thevarious methods, processes, or functions described herein.Alternatively, these methods, processes, or operations can be defined byhardware, firmware, and/or any combination of hardware, firmware andsoftware. Therefore, memory 204 may include a tangible, non-transitorycomputer-readable medium, having stored thereon program instructionsthat, upon execution by one or more processors, cause printing device100 to carry out any of the methods, processes, or functions disclosedin this specification or the accompanying drawings.

Memory 204 may also be configured to store compressed and non-compressedelectronic documents that may later be processed (e.g., printed). Thus,memory 204 may serve as an output medium for these electronic documents.

Input/output unit 206 may include any of the operations and/or elementsdescribed in reference to user interface 106. Thus, input/output unit206 may serve to configure and/or control the operation of processor202. Input/output unit 206 may also provide output based on theoperations performed by processor 202.

These examples of a printing device are provided for illustrativepurposes. In addition to and/or alternatively to the examples above,other combinations and/or sub-combinations of printer and computertechnologies may also exist, amongst other possibilities, withoutdeparting from the scope of the embodiments herein.

FIG. 3 depicts some of the possible data paths through which arepresentation of an electronic document processed by printing device100 may pass. In FIG. 3 it is assumed that printing device 100 mayinclude a scanning unit 302 and a printing unit 304. Control of each ofthese units may be implemented in hardware, firmware, software, or anycombination of hardware, firmware and/or software. Additionally, each ofscanning unit 302 and printing unit 304 may communicate with computingdevice 300, and possibly with other computing devices as well. In somesituations, the data paths supported by printing device 100 may bereferred to a “pipelines.”

A scan-to-print data path 310 may be supported by scanning unit 302 andprinting unit 304. Scan-to-print data path 310 may be used, e.g., when auser instructs printing device 100 to copy a physical document. Inresponse to this instruction, scanning unit 302 may scan the physicaldocument into an electronic document, and transmit the electronicdocument via scan-to-print data path 310 to printing unit 304. Use ofscan-to-print data path 310 may involve at least temporarily storingsome or all of the electronic document (possibly in a compressed format)in the data storage of printing device 100. Then, printing unit 304 mayprint the electronic document to physical media (e.g., one or moresheets of paper).

A scan-to-host data path 306 may also be supported by scanning unit 302and computing device 300. Scan-to-host data path 306 may be used, e.g.,when a user instructs printing device 100 to scan a physical document.The user may also instruct printing device 100 to transmit arepresentation of the resulting electronic document to computing device300, or printing device 100 may be pre-configured to automaticallytransmit the electronic document to computing device 300. Thus, inresponse to this instruction, scanning unit 302 may scan the physicaldocument into an electronic document, and transmit the resultingelectronic document via scan-to-host data path 306 to computing device300. Use of scan-to-print data path 310 may involve at least temporarilystoring (possibly in a compressed format) some or all of the electronicdocument in the data storage of printing device 100, and transmitting arepresentation of the resulting electronic document to computing device300.

A host-to-print data path 308 may be supported by computing device 300and printing unit 304. Host-to-print data path 308 may be used, e.g.,when a user instructs computing device 300 to print an electronicdocument on printing device 100. In response to this instruction,computing device 300 may transmit a representation of the electronicdocument to printing unit 304. Printing device 100, via printing unit304, may print the electronic document to physical media. Some, or all,of the electronic document may be stored (possibly in a compressedformat) in the data storage of printing device 100 before and/or duringthe printing of the electronic document.

Clearly, for at least one of the data paths discussed above, as well aspossibly other data paths supported by printing device 100, anelectronic document may require storage and/or transmission over anetwork or a cable. The efficiency of both the storage and transmissionof electronic documents can be improved by compressing these electronicdocuments for storage and/or transmission. For example, if electronicdocuments can, on average be compressed to one-quarter their initialsize, then about four times as many electronic documents can be storedin a fixed amount of data storage. Further, the transmission of thesecompressed electronic documents over a network or cable can occur aboutfour times as fast as would transmission of the uncompressed electronicdocuments.

In the past, lossy compression may have been used for some data paths,while lossless compression may have been used for other data paths.(Lossy compression techniques compress data by discarding some of it,while lossless compression techniques compress data without discardingany of it). For example, in some implementations, host-to-print datapath 308 may utilize lossless compression in order to preserve sharpedges of text and line art in printed versions of electronic documents.On the other hand, scan-to-host data path 306 and scan-to-print datapath 310 may utilize lossy compression in order to efficiently store andtransmit scanned physical documents containing graphical images.Printing device 100 may be made more efficient and its software and/orhardware implementation may be simplified by using the same or a similarcompression technique for at least some (and perhaps all) of its datapaths.

Thus, a compression technique that supports both lossless and lossycompression is desirable. It is also desirable for both lossless andlossy compression to be able to be applied within the same document. Tothat point, an understanding of how images are presented may be useful.

3. Example Image

An image may be a matrix of pixels encoded according to an image formatand a color model. FIG. 4 depicts an image 400 that may be included onor within a physical or electronic document handled by printing device100. While image 400 appears in black and white, color images withsimilar characteristics may also be handled by printing device 100.Image 400 may be formed using various resolutions, such as 600 dots perinch (dpi) or 1200 dpi among other examples.

As can be seen in FIG. 4, image 400 contains various types of content.For instance, image 400 contains both text and line art with sharpedges. Further, image 400 also contains sections containing a continuoustone (e.g., the upper-left-hand corner of image 400), as well assections containing photorealistic data (e.g., the lower-right-handcorner and upper-right-hand corner of image 400). Text overlays varioussections of image 400. Thus, image 400 illustrates a common type ofimage that is used in business printing, e.g., in pages of a brochure,magazine, flyer, or advertisement.

In some possible embodiments, each of the pixels in an image, such asexample image 400, may be categorized as one of three different objecttypes: image graphics, vector graphics, or text. Image graphics includephotorealistic images, such as images from photographs. Thephotorealistic data in the lower-right-hand corner and upper-right-handcorner of image 400 may qualify as image graphics. The non-text linesthroughout image 400 may qualify as vector graphics, and the textualcharacters (e.g., the “E” and the “R” for instance) may qualify as text.

The object type of a particular pixel may be determined by or from apage description language (PDL) representation of an electronicdocument. A PDL is a language, grammar, or format that describes theappearance of a printed or displayed page at a higher level than thepage's actual pixels. A pixel representation of a page may be derivedfrom a PDL.

Thus, an electronic document may contain one or more pages that arerepresented by a PDL document. Each of these pages may be represented bypart or all of a PDL document, and/or by an image. There are manyexamples of PDLs, of which the Portable Document Format (PDF) is one.

A unified compression technique may be able to accurately represent thesharp edges and lines of image 400, while still using lossy compressionin order to reduce the storage requirements of an electronic documentcontaining image 400. Particularly, it is desirable to preserve theexact characteristics of certain elements, such as text, basic geometricshapes, and line drawings, because even minor distortions to theseelements can appear unpleasing to the human eye. Thus, these elementsmay be categorized as vector graphics or text, and may be targeted forcompression in a lossless fashion.

On the other hand, photorealistic images and complex graphics withgradients can be viewed without such exactness. Thus, these elements maybe categorized as image graphics, and may be targeted for compression ina lossy fashion. For instance, image graphics may be compressed in amanner such that they appear visually the same or similar to the humaneye as their respective uncompressed versions.

Further, the object type of a pixel (e.g., image graphics, vectorgraphics, or text), may influence a color conversion applied to thepixel, as well as the type of halftone screen applied to the pixel.These issues are discussed in more detail below.

In some cases, vector graphics and text objects may appear to havesimilar characteristics. Indeed, these two categories can be combined insome embodiments, and processed in the same fashion. However, certaintypes of vector graphics, such as lightly-colored lines, appear betterwhen processed differently from text. For instance, if lightly coloredlines are processed in the same fashion as text, some of these lines maybecome difficult to distinguish. Consequently, applying a differentcolor conversion and/or a different halftone screen to vector graphicsmay preserve and/or enhance these lines. For instance, the halftonescreen selected specifically for a vector graphics pixel may result inmore toner being applied when this pixel is printed.

4. Example Image Color Models

Electronic documents can be represented using a number of color models.Thus, a robust compression technique should be able to operate on someor all of these models. Further, the compression technique may includepreprocessing that is specific to individual color models.

For example, the red-green-blue (RGB) color model may be used fordisplay of images on electronic output devices, such as televisions,monitors, and computer screens. RGB is an additive color model in whichred, green, and blue light are added together in various ways to producea spectrum of colors. For instance, cyan may be formed by combininggreen and blue, yellow may be formed by combining red and green, magentamay be formed by combining red and blue, and white may be formed bycombining red, green, and blue.

A particular pixel of an RGB image may be expressed as a three-planetuple (R,G,B), each plane of which can vary from zero to a pre-definedmaximum value (e.g., 255). If all of the planes are 0, the result may beblack. If all of the planes are at the maximum value, the result may bethe brightest representable white. (The color planes described hereinmay also be referred to as color channels.)

RGB output is typically device-dependent, in that different outputdevices may display the same RGB image in a different fashion. Thus, insome cases, these differences may be perceivable by humans. In someembodiments, physical documents scanned into printing device 100 usingscan-to-host data path 306 may be encoded using an RGB color model.

The cyan-magenta-yellow (CMY) color model may be used for the printingof color images by printing devices. CMY is a subtractive color model inwhich cyan, yellow, and magenta are applied to a white surface invarious ways to reproduce a spectrum of colors. For instance, red can beformed by combining magenta and yellow, blue can be formed by combiningcyan and magenta, and green can be formed by combining cyan and yellow.Thus, the CMY color model might be considered a complement of the RGBcolor model.

A particular pixel of a CMY image may be expressed as a three-planetuple (C,M,Y), each plane of which can vary from 0 to a pre-definedmaximum value. If all of the planes are at 0, the result may be white.If all of the planes are at the maximum value, the result may be black.

Like, RGB output, CMY output is typically device-dependent, in that theprinted output of the same CMY image on different printing devices mayappear to be different. In some cases, these differences may beperceivable by humans. In some embodiments, electronic documents printedby printing device 100 using host-to-print data path 308 and/orscan-to-print data path 310 may be encoded using a CMY color model.

In some embodiments, a four-plane CMYK color model can also be used.This four-plane model of CMYK may be similar to or the same as the CMYcolor model, with the exception that a key (black) plane is also used.In addition to possibly combining cyan, magenta, and yellow to formblack, the separate key (black) ink source may be used to form black.Thus, a particular pixel of a CMYK image may be expressed as afour-plane tuple (C, M, Y, K), each plane of which can vary from zero toa pre-defined maximum value.

Using the CMYK color model, the same colors as the CMY model can besupported, but less ink is typically used because the K colorant canreplace mixtures of the C, M, and Y colorants. However, the CMYK colormodel may not always be able to be conveniently converted to and fromother color models, because the addition of the K colorant addsredundancy, e.g., the same color can be a result of mixing different C,M, Y, and K combinations. In some embodiments, one or more color tablesmay be used to convert pixels from the CMY model to the CMYK model,and/or between other pairs of color models.

An additional color model is gray, also referred to as grayscale, whichmay be used for the representation of black and white images. Unlike theRGB and CMY/CMYK color models, each pixel of the gray color model isexpressed using a single plane (K) that encodes the pixel's intensity.The values used by the gray plane can vary from zero for black, to apre-defined maximum value for white (e.g., 255). In some embodiments,one or more of the data paths supported by printing device 100 may beable to encode images using the gray color model.

Another color model is YCbCr. In some implementations, this color modelmay be used as an alternative representation of an image. Particularly,the Y plane may represent the brightness of a pixel, and the Cb and Crplanes may represent the blue-yellow chrominance and red-greenchrominance, respectively. The YCbCr color model has a well-definedrelationship with the RGB and CMY color models and can be converted toand from either of these color models with relative ease.

An additional advantage to the YCbCr color model is that compression ofimages encoded using the YCbCr color model tends to be more efficientthan compression of images encoded in the RGB or CMY/CMYK color models.Particularly, the human eye is not very good at detecting high-frequency(e.g., rapidly varying) chrominance information in an image. Thus,images encoded using the YCbCr color model can exploit this informationby ignoring high-frequency components of the Cb and Cr planes. So,images encoded in a particular color model may be converted to the YCbCrcolor model before compression in order to improve compressionperformance.

5. Example Attribute Plane

In addition to color planes, an image may be digitally represented usingan attribute plane. While the values of the attribute plane might notappear visibly in the image, the attribute plane may be used to provideguidance to image compression and processing operations.

As an example, each pixel in an image may be associated with an array ofbits (e.g., 8 bits or 16 bits) representing attributes. Some of theseattributes may indicate whether a pixel is used as an overlay on top ofother materials, or being used as part of a printing or a copyingfeature. Other attributes may include a reference to a neutral colorpreservation technique, a color conversion table to use when convertingthe pixel between color models, and/or a reference to a halftone screento use when printing the pixel.

An array of the attribute plane may be used to identify an object typethat its associated pixel represents. These identified object types mayinclude a graphical image, vector graphics, or text, for example. Objecttype tags may be one or more bits of such an attribute array.

An example attribute array 500 is shown in FIG. 5. Attribute array 500includes overlay bit 502, two neutral color preservation bits 504, 506,two color table bits 508, 510, a copy or print bit 512, and two halftonebits 514, 516.

Overlay bit 502 may indicate whether the associated pixel overlays othermaterials. For instance, some printing devices may support applying oneor more background images or patterns to some print jobs. These imagesor patterns may be static, such as a logo or a border, or may bedynamic, such as automatic page numbering (e.g., displaying a phrasesuch as “Page 1 of 3” at the bottom of each page in a document).

For instance, in the case of automatic page numbering, the printingdevice may be directed by a user to add page numbers. The user mightselect an option on the user interface of the printing device to specifyautomatic page numbering. Alternatively, the printer driver of thecomputer that transmits the electronic document to the printing devicemay specify automatic page numbering. In other cases, the printingdevice may detect which pixels are foreground pixels (such as text on apage) versus background pixels (such as the white background of a page),and indicate that the foreground pixels are overlaid.

Neutral color preservation bits 504, 506 may indicate whether a pixel isa “neutral” color, such as white, black, or gray, or a non-neutralcolor. For instance, neutral color preservation bits 504, 506 may takeon a value of “00” for white, “01” for black, “10” for other neutralgrays, or “11” for non-neutral colors.

Performing neutral color preservation may improve the color conversionprocess from the CMY color model to the CMYK color model, and/or thecolor conversion process between other color models. Printers mayperform this conversion so that neutral colors can be expressed entirelyusing the K color channel, resulting in the use of only black toner.Thus, it is desirable for white pixels to remain white, black pixels toremain black, and gray pixels to be expressed in the CMYK color model as(0, 0, 0, K). However, the lossy compression and decompressiontechniques herein can result in neutral pixels being represented asnon-neutral colors.

In the CMY color model, a color is a neutral gray when all threechannels have the same value, and such a neutral color can be convertedto the CMYK color model as (0, 0, 0, K). As an example, a gray CMY pixel(73, 73, 73) may be changed by a lossy compression/decompressiontechnique to a non-gray pixel (73, 74, 72). Thus, the color neutralityof this pixel is lost, and color toner would be used to print thispixel. To overcome this drawback, neutral color preservation bits 504,506 can be used to force the decompressed CMY pixel back to a neutralstate. One possible way of doing this would be to take the average valueof the C, M, and Y pixels, round that value off to the nearest integer,and use the resulting value for all three color channels.

Conversely, in some cases, the values of a pixel may indicate that it isneutral (e.g., the C, M, and Y pixels all have the same value), but theneutral color preservation bits may take on a value of “11”. In thiscase, the least-significant bit of one of the color planes may beflipped (from 0 to 1 or from 1 to 0) in order to change the pixel into anon-neutral color.

Additionally, a CMY pixel that is pure white will take on the values (0,0, 0), and the associated neutral color preservation bits may be “00”.After compression and decompression, the pixels may take onnon-pure-white values, such as (0, 2, 1). In this case, the neutralcolor preservation bits may be examined, and it may be determined thepixel should be pure white. Accordingly, the pixel's values may bechanged to (0, 0, 0) to preserve its pure white characteristics.

Similarly, a CMY pixel that is pure black will take on the values (255,255, 255), and the associated neutral color preservation bits may be“01”. After compression and decompression, the pixels may take onnon-pure-black values, such as (255, 253, 253). In this case, theneutral color preservation bits may be examined, and it may bedetermined the pixel should be pure black. Accordingly, the pixel'svalues may be changed to (255, 255, 255) to preserve its pure blackcharacteristics.

Herein, pure white pixels with values of (0, 0, 0) and pure black pixelswith values of (255, 255, 255) may be referred to as pixels with “pureextreme” values. In implementations where more than eight bits are usedto represent color values, respective pixel values other than (0, 0, 0)and (255, 255, 255) may represent pure white and pure black.

Color table bits 508, 510 may indicate a color table that contains amapping of color plane values between the CMY and CMYK color models, asone possible example. As noted above, the object type of a pixel (e.g.,image graphics, vector graphics, or text) may be determined from the PDLrepresentation of the electronic document from which the pixel isderived. Based on the object type of the pixel, a different colorconversion table may be applied. For instance, color table bits 508, 510may take on a value of “00” when the pixel is part of a text object,“01” when the pixel is part of a vector graphics object, and “11” whenthe pixel is part of an image graphics object. Based on the values ofcolor table bits 508, 510, one of several color conversion tables may beselected and applied to the pixel.

Copy or print bit 512 may indicate whether the associated pixel is beingcopied (scanned and then printed) or traditionally printed (e.g., from aPDL document locally stored or received from another device). The valueof this bit may be combined with those of halftone bits 514, 516 toselect one of up to eight halftone screens (see below for a discussionof halftoning). In some cases, electronic documents that are scanned andthen printed may use certain types of halftone screens, while electronicdocuments that are traditionally printed may use other types of halftonescreens.

Halftone bits 514, 516 may indicate whether a halftone screen is to beapplied to the image when printed, and which halftone screen is to beapplied. Halftoning is a technique that simulates a gradient through theuse of dots that vary in size, shape, or spacing. Halftoning candecompose images containing multiple shades of various colors into aseries of overlaid halftone screens, with each screen containing asingle (binary) shade of a particular color. The overlaid halftonescreen creates an appearance that the dots are blended into smoothtones.

Similar to color table bits 508, 510, halftone bits 514, 516 may take onvalues based on the type of object that the pixel represents. Thus,halftone bits 514, 516 may take on a value of “00” when the pixel ispart of an image graphics object, “01” when the pixel is part of avector graphics object, and “11” when the pixel is part of a textobject. Based on the values of halftone bits 514, 516 one of severalhalftone screens may be selected and applied to the pixel.

Although based on the same three object types, color table bits 508, 510may be distinct from halftone bits 514, 516. One possible reason forkeeping these two distinct sets of information is to accommodate objectpixel overlap blending in some PDLs. For example, when text pixels areblended with raster image pixels, color table bits 508, 510 may indicatea raster image, halftone bits 514, 516 may indicate text. This featureupholds the image quality of overlapping, blended objects.

Example attribute array 500 contains 8 bits (1 byte) per pixel. Thus,using this style of attribute array, the magnitude of the attributeplane grows linearly with the number of pixels in the image. The extentof attribute arrays associated with pixels in an image may be referredto as the attribute plane for that image.

An attribute plane may be referred to as an A plane. Thus, when anattribute plane is combined with one or more color planes, the combinedattribute and color planes may be referred to as KA, CMYA, CMYKA, RGBA,or YCbCrA, depending on color model being used. Herein, these examplesof combined attribute and color planes may be referred to as a “colormodel” despite the attribute plane not actually representing a colorper-se.

6. Example Imaging Pipeline

A high-level overview of an example imaging pipeline is shown in FIG. 6.This imaging pipeline takes the form of a flow chart 600, and includesmultiple compression and decompression steps. Flow chart 600 mayrepresent a series of steps carried out by a printing device in order toreceive, store, and print an electronic document.

At block 602 of FIG. 6, an electronic document may be represented as oneor more images formatted according to the KA or CMYA color models.However, these color models are chosen for purposes of illustration, andother color models may be used. The KA or CMYA pixels may be derivedfrom a PDL representation of the electronic document.

Alternatively, at block 602, the electronic document may be representedby an image format, such as a bitmap, JPEG, GIF, etc., and converted tothe KA or CMYA color model, for instance.

At block 604, cell-based compression (discussed in detail below) may beapplied to the pixels of each plane of the electronic document. Thus,for KA electronic documents, cell-based compression may be applied tothe gray plane and the attribute plane. For CMYA electronic documents,cell-based compression may be applied separately for each of the C, M,Y, and A planes or in a composite fashion. Therefore, in some cases, thecell-based compression may compress the corresponding cells of two ormore planes in the same logical operation. The result of block 604 maybe a bitstream representing a compressed version of the electronicdocument.

At block 606, this compressed version may be stored in a storage outputmedium. In general, this storage may be memory of a printing device thatstores compressed representations of one or more pages. Since thecompression techniques described herein may be able to compress thesedocuments to at least one-third or one-fourth of their originalbitmapped size, the memory size requirements for the storage may bereduced accordingly. As a result, printing devices incorporating theembodiments herein may be less expensive to produce.

At block 608, cell-based decompression may be applied to each plane ofthe electronic document. This may result in the re-creation of the KA orCMYA representation of the electronic document. However, if thecell-based compression technique uses lossy compression, the electronicdocument resulting from the decompression of block 608 may be differentfrom the electronic document that was compressed by the compression ofblock 604. Nonetheless, the differences between these versions of theelectronic document might be slight, and therefore might not be readilyperceived by humans.

At block 610, the decompressed version of the electronic document may befurther processed. For instance, various transforms may be applied tothe electronic document. After one or more of these transforms areperformed on the electronic document, the electronic document may becompressed again at block 604 and stored in storage at block 606.Application of block 610 is optional, and not all electronic documentswill be subject to this processing.

At block 612, the decompressed version of the electronic document mayalso be further processed. At block 614, cell-based compression may beapplied to each plane of the electronic document. This compressionprocedure may be the same as that of block 604, or may be different. Forinstance, the compression applied at block 614 may be configured toobtain higher or lower compression ratios than that of block 604.

At block 616, this compressed version may be stored in storage. Like thestorage of block 606, this storage may be memory of a printing devicethat stores compressed representations of one or more pages. Since thesepage representations are compressed, the memory requirements and cost ofstorage is reduced.

At block 618, cell-based decompression may be applied to each plane ofthe electronic document. This may result in the re-creation of the KA,CMYA, or CMYKA representation of the electronic document. As was thecase for block 608, if the cell-based compression technique uses lossycompression, the electronic document resulting from the decompression ofblock 618 may be different from the versions of the electronic documentthat were compressed by the compression of block 604 and/or block 614.

At block 620, further processing may be applied to the electronicdocument. After block 620, the electronic document may be ready forprinting, or additional processing may be applied.

The cell-based compression procedures of blocks 604 and 614 may be thesame or different. For instance, these procedures may use differentcompression algorithms, or may use the same compression algorithm withthe same or different settings. Likewise, the cell-based decompressionprocedures of blocks 608 and 618 may also be the same or different.

In some embodiments, the number of attribute plane bits used per pixelmay vary based on the point at which compression takes place in flowchart 600. For instance, all bits of attribute array 500 may becompressed at block 604. Since color conversion, neutral colorpreservation, overlay processing, and halftoning may take place afterblock 604, each bit in attribute array 500 should be preserved.

However, after step 612, overlay bit 502, neutral color preservationbits 504, 506, and color table bits 508, 510 may no longer be needed.Further, some types of printing devices do not have a copy function.Thus, for these printing devices, copy or print bit 512 might not beused any point in flow chart 600, and can be omitted from thecompression of block 604 and block 614.

Regardless, in various embodiments, anywhere from zero to six bits ofattribute array 500 may be omitted from a cell-based compressionprocedure. As a result, the overall number of bits that are compressedper cell may be reduced, which may in turn improve the achievablecompression ratio of cells of the attribute plane.

The description herein focuses on a single instance of cell-basedcompression applied to the attribute and color planes of an image. Theimage may be a representation of a single page from an electronicdocument containing one or more pages. Nonetheless, multiple instancesof this cell-based compression may be applied to the cell of such animage, according to pipeline 600 or some other arrangement. In this waythe entire image may be compressed in an efficient fashion.

Further, cell-based decompression techniques may also be applied to theimage by reversing the cell-based compression techniques describedherein.

7. Example Cell Configuration

One aspect of cell-based compression is that it may divide each colorplane and attribute plane of an electronic document into one or more m×ncells, and then compress each cell in a partially-independent or fullyindependent fashion. For example, m might be 8 and n might be 4.Alternatively, m might be 8 and n might be 8, or m might be 16 and nmight be 16, as well. Other values of m and n may be used.

Each cell may be evaluated to determine what type of compressiontechniques might be most efficient for compressing the data in thatcell. For example, if a cell consists entirely of pixels that are thesame color, the data in the cell may be very efficiently compressed intoa representation of the color and perhaps some overhead data. However,if a cell contains part of a photorealistic image, the data in the cellmay not be able to be compressed at such a high compression ratio.

FIG. 7 depicts an example cell structure that can be used withcell-based compression. For sake of convenience, cells are considered interms of pCells and qCells. pCells may be m×n element blocks of a colorplane or attribute plane of an image. Thus, for a color plane, pCellelements may be pixels, while for an attribute plane, pCell elements maybe attribute arrays. qCells may be a×b element blocks of a color planeor attribute plane of an image. Each qCell may consist of some number ofnon-overlapping pCells. Depending on context, the terms “pCell” and“qCell” could refer to the elements of a single attribute or color planeor multiple attribute and color planes.

As an example, FIG. 7 depicts four 8×8 pCells 700, 702, 704, 706 eachcontaining 64 attribute or pixel values for a particular plane. Eachattribute or pixel value, for example, may be represented by a number inthe range of 0-255, and thus may be expressed as a byte. However, otherpossibilities exist. For sake of simplicity, pCell 700 only shows thepositions of some representative values.

A 2×2 arrangement of four pCells as shown in FIG. 7 may be referred toas a qCell. Thus, the qCell 710 of FIG. 7 may be 16×16, and may contain256 attribute or pixel values for a particular plane. Nonetheless, aqCell could include a different number of pCells (e.g., a 3×2, 2×3, or3×3 block of pCells).

FIG. 7 refers to the upper-left-hand pCell as the “a” pCell, theupper-right-hand pCell as the “b” pCell, the lower-left-hand pCell asthe “c” pCell, and the lower-right-hand pCell as the “d” pCell. Thesedesignations may be referred to as pCell IDs, and are merely aconvenient way to distinguish the locations of pCells within a qCell,and will be used in the interleaving discussion below.

The cell-based compression techniques described herein may operate onpCells and qCells. For purposes of simplicity, it will be assumed that8×8 pCells and 16×16 qCells are used. However, this assumption is madewith the understanding that differently sized pCells and qCells may beused instead.

Further, a planar pCell or qCell may refer to elements of a singleplane, while a composite pCell or qCell may refer to correspondingelements across multiple planes. For instance, when the CMYA color modelis used, a planar pCell may include elements of one of the C, M, Y, or Aplanes, while a composite pCell may include elements from two or more ofthe C, M, Y, and A planes.

8. Example Cell-Based Compression

TABLE 1 Color Attribute Compression Cell Type Lossy or Lossless PlaneUsage Plane Usage D1, D1D pCell Lossless Yes Yes P2, P2D pCell LosslessYes Yes P4 pCell Lossless Yes Yes DCTP pCell Lossy Yes No DCTQ qCellLossy Yes No D1C qCell Lossless Yes Yes D1E N/A N/A Yes Yes D64 pCellLossless No Yes EOF N/A N/A Yes Yes

The next several sub-sections describe various cell-based compressiontechniques in detail. Each of these techniques operates with pCells,qCells, or both. An overview of these compression techniques is providedin Table 1.

a. D1 and D1D Compression

D1 compression may be used when all of the attributes or pixels in agiven pCell are the same. For instance, suppose that each attribute orpixel in the pCell takes on a value from 0 to 255. If all of the valuesare 74, as just one example, then D1 compression may be applied to thiscell. In this way, the amount of data needed to represent the pCell canbe dramatically reduced.

A variation of D1 compression, which may be referred to as D1Dcompression, may be used when the color value is a default color. Forinstance, in the YCbCr color space's Y plane, the gray color space, andall CMYK color spaces, the default values may be 0 and 255. In the YCbCrcolor space's Cb and Cr planes, the default values may be 128 and 255.D1D compression has a somewhat more efficient encoding than D1compression. As there are only a limited number of default values (e.g.,2) in a color space, these default color values can be represented witha small number of bits (e.g., 1). Consequently, D1D compression mayrequire fewer bits per pCell than D1 compression.

For the attribute plane, the D1D default value may be predetermined(e.g., 0 or 128) or set manually by a user.

In some cases, multiple adjacent pCells (e.g., pCells in a row orcolumn) with same value for all attributes or pixels may be representedusing D1 or D1D encoding. There are two possible ways in which this mayoccur. Both D1 and D1D compression allow for a run length to be encoded.The run length represents how many total pCells were also compressedusing D1 compression. D1 compression also allows a previously used(cached attribute or pixel value) to be used in the encoding of asubsequent pCell.

TABLE 2 Compression Opcode Options Arguments D1 001 V′ Length/Value(opt) D1D 000 V Length

Table 2 provides example binary encodings for D1 and D1D compression.For D1 compression, a compressed representation of a pCell begins withthe opcode 001. If the V′ bit is 1, the D1 encoding also includes the1-byte value argument (which is the same for all attributes or pixels inthe pCell). If the V′ bit is 0, the value argument is omitted from theencoding, and the value in the most recent D1 encoding (e.g., a cachedvalue) is used for all attributes or pixels in the pCell. The lengthargument may be two bits, thus supporting a run length within a qCellfrom 1 to 4 pCells. The value argument applies to pixel values as wellas attribute values. Therefore, the value argument may be 8 bits whencompressing a pCell of the color plane. As noted above, however, lessthan 8 bits may be used to represent attribute plane values, and thesize of the value field may be decreased appropriately.

For D1D compression, a compressed representation of a pCell begins withthe opcode 000. The V bit indicates which of the two default values isto be used (e.g., if V is 0, then one value will be used, and if V is 1,then the other value will be used). The length argument may be used inthe same fashion as it is used for D1 compression.

b. P2 and P2D Compression

P2 compression may be used when each of the attributes or pixels in agiven pCell can be represented using one of two values. For instance, ifthe attributes or pixels in a cell can take on values between 0 and 255,but all values are either 76 or 125, P2 compression may be used on thepCell. When P2 compression is used, the two values, as well as a bitmapof the attributes or pixels in the pCell, may be encoded. The bitmapindicates which value is associated with each attribute or pixel in thepCell. Similar to D1 and D1D compression, P2 compression may use cachingof the most recently used pair of values.

A variation of the P2 compression technique, which may be referred to asP2D compression, may be used when only two default color values appearin a cell. As noted above, in the YCbCr color space's Y plane, the graycolor space, and all CMYK color spaces, the default values may be 0 and255. In the YCbCr color space's Cb and Cr planes, the default values maybe 128 and 255. Thus, P2D compression may encode the bitmap of theattributes or pixels in the pCell, but does not need to explicitlyencode the values of the attributes or pixels, because the defaultvalues are used.

For the attribute plane, one or both P2D default values may bepredetermined (e.g., 0 and 128) or set manually by a user.

TABLE 3 Compression Opcode Options Arguments Bitmap P2 011 V′/P Line map(opt)/value 1 Up to 8 lines (opt)/value 2 (opt) (opt) P2D 010 P Line map(opt) Up to 8 lines (opt)

Table 3 provides example binary encodings for P2 and P2D compression.For P2 compression, a compressed representation of a pCell begins withthe opcode 011. If the V′ bit is 1, the P2 encoding also includes the 2bytes indicating the pair of values (value 1 and value 2) used by theattributes or pixels in the pCell. If the V′ bit is 0, these values areomitted from the encoding, and the values in the most recent P2 encoding(e.g., the cached values) are used for the attributes or pixels in thepCell.

For P2D compression, a compressed representation of a pCell begins withthe opcode 010. For both P2 and P2D compression, when the P option is 1,the line map argument is present, indicating which of the 8 lines in thebitmap are also present. When the P option is 0, no line map argument orlines in the bitmap are present. Instead, a cached bitmap from the mostrecent pCell compressed with P2 or P2D may be used.

Each bit of a line map indicates the presence of a corresponding linefield in the bitmap. If the line map is present, then it may be assumedthat at least one line is also present in the bitmap. Therefore, theline map might only use 7 bits to encode the 2nd through 8th line in thebitmap. For each bit of the line map a 0 indicates that thecorresponding line absent, and the previous line repeats, while a 1indicates that the corresponding line is present.

c. P4 Compression

P4 compression may be used when all of the pixels in a given cell can berepresented using three or four color values. When P4 compression isused, three or four values, as well as a bitmap of the attributes orpixels in the pCell, may be encoded. The bitmap indicates which value isassociated with each attribute or pixel in the pCell.

TABLE 4 Compression Opcode Arguments Bitmap P4 100 Line map/value1/value 2/value 3/ 1 to 8 lines value 4

Table 4 provides an example binary encoding for compression. For P4compression, a compressed representation of a pCell begins with theopcode 100. The 7-bit line map defines how the bitmap is compressed,similar to that of a P2 bitmap. For each bit of the line map, a 0indicates that the corresponding line is absent, and the previous linerepeats, while a 1 indicates that the corresponding line is present.

The four value arguments are 8-bit fields representing the values ofelements found in the pCell. In order to distinguish between thesevalues, each line of the bitmap (if present) may be 16 bits long. Whenonly three values are encoded by P4 compression, the “value 4” argumentmay be present but ignored.

d. DCTP Compression

DCTP compression refers to using discrete cosine transform (DCT)techniques to compress a pCell. In some embodiments, DCTP compressionmay be used when D1, D1D, P2, P2D, and P4 compression are inappropriatefor a particular pCell of a color plane. DCTP compression might not beused on the attribute plane because DCTP compression is lossy, and it isdesirable for the attribute plane to be losslessly compressed. DCTPcompression may involve: a DCT transform, scaling, quantization,reordering from a two-dimensional coefficient array to one-dimensionaldata, and Huffman entropy coding.

TABLE 5 Compression Opcode Bitmap DCTP 11 DCT encoding (6-200 bits onaverage)

Table 5 provides an example binary encoding for DCTP compression. ForDCTP compression, a compressed representation of a pCell begins with theopcode 101, and the remaining part of the representation is a DCTencoding. In some embodiments, the DCT encoding may be a collection ofquantized DCT coefficients packaged according to a subset of the JointPicture Experts Group (JPEG) standard, with Huffman encoding.

e. DCTQ Compression

DCTQ compression refers to using DCT techniques to compress a qCell as awhole by downsampling it to the size of a pCell, and then applying DCTPencoding to the resulting pCell. In some embodiments, DCTQ compressionmay be used when D1, D1D, P2, P2D, and P4 compression are inappropriatefor one or more particular pCells of a color plane. DCTQ compressionmight not be used on the attribute plane because DCT-based compressionis lossy, and it is desirable for the attribute plane to be losslesslycompressed.

As an example, a 16×16 qCell may be downsampled to an 8×8 pCell. Thedownsampling procedure may involve dividing the 16×16 qCell into 64non-overlapping 2×2 blocks, and replacing each block with a single pixelvalue that is the average of the pixel values in the respective block.The resulting 64 average values make up the 8×8 cell. Notably, thisdownsampling provides an initial 4:1 compression ratio, and then DCTPencoding provides additional compression on top of that.

TABLE 6 Compression Opcode Bitmap DCTQ 101 DCT encoding (6-200 bits onaverage)

Table 6 provides an example binary encoding for DCTQ compression. ForDCTQ compression, a compressed representation of a qCell begins with theopcode 101, and the remaining part of the representation is a DCTencoding. Similar to the DCTP case, the DCT encoding may be a collectionof quantized DCT coefficients packaged according to a subset of the JPEGstandard, with Huffman encoding.

f. D1C and ME Compression

D1C and D1E compression facilitate efficient encoding of runs ofconsecutive cells that are candidates for D1 or D1D compression.Encoding these runs may dramatically increase compression performance onimages with sections exhibiting a solid color (e.g., a whitebackground). Two types of D1 or D1D runs may be supported: (i)inter-qCell runs of D1 or D1D candidate pCells that cross qCells, and(ii) intra-qCell runs of D1 or D1D candidate pCells within a qCell.

Inter-qCell D1 or D1D runs encode D1 or D1D runs that span two or moreqCells. When the two right most pCells (the “b” and “d” pCells) in aqCell contain an 8×16 array of constant pixel values that get encodedusing D1 compression, this implies the start of a D1 or D1D run, andcauses the encoding mode to change from a normal encoding mode to D1 orD1D run encoding mode. This encoding mode is tracked per plane, and onqCell boundaries. Thus, for a particular plane, the mode change to D1 orD1D run encoding mode takes place at the end of a qCell boundary.

In D1 or D1D run encoding mode, only two codes are defined: D1C(continue) and D1E (end), and they are each encoded using a single bit.As long as subsequent qCells contain the same 16×16 pixel value as thetwo D1 or D1D candidate pCells that began the run, a 1-bit D1C opcode isemitted, and D1 or D1D run encoding mode continues. If a subsequentqCell contains anything other than a solid value matching the start ofthe run, then the run ends. In this case, a 1-bit D1E code is emittedand normal encoding mode is reentered. Also, any remaining D1, P2, P4,DCTP or DCTQ encodings for the present qCell are emitted.

Intra-qCell D1 or D1D runs encode D1 or D1D runs within a qCell. Forinstance, a 2-bit run length may be used to encode D1 and D1D runs thatextend from 1 to 4 pCells within a qCell. Such runs are denoted D1(n)and D1D(n), where n takes on values 1, 2, 3, or 4.

TABLE 7 Compression Opcode D1C 1 D1E 0

Table 7 provides example binary encodings for D1C and D1E compression.For D1C compression, a 1 indicates a continuation of a D1 or D1D run,and all four pCells in the given qCell match the D1 or D1D cells of thecurrent run. For D1E compression, a 0 indicates the end of a D1 or D1Drun.

g. D64 Compression

D64 compression is a lossless technique that is used to encode a pCellof the attribute plane for which D1, D1D, P2, P2D, and P4 compression isnot appropriate. For instance, if the pCell contains 5 or more differentvalues, D64 compression may be used.

D64 compression encodes all 64 values of an 8×8 attribute pCell, andwhen included with its header, the results in a very small expansionrather than a compression. However, since it is desirable for theattribute plane to be compressed in a lossless fashion, D64 compressionmay be necessary in some situations.

Nonetheless, depending of where the cell-based compression is takingplace in compression pipeline 600, all 8 bits of the attribute values ina pCell might not be encoded. Instead, 2-8 bits of these values mayinstead be packed and encoded. This results in an improvement for D64compression.

TABLE 8 Compression Opcode Attributes D64 11 64 attributes encoded using2-8 bits per attribute

Table 8 provides an example binary encoding for D64 compression. Acompressed representation of a D64 pCell begins with the opcode 101, andalso includes the 64 attribute arrays in the pCell, encoded using 2-8bits per attribute. The number of bits per attribute array is based onhow many attribute bits can be omitted when compressing the attributeplane, as discussed above. Note that DCTP and D64 compression share thesame opcode. However, since DCTP is used only for color planes and D64is used only for attribute planes, these encodings can be differentiatedbased on the plane of the pCell being compressed.

h. End of File (EOF)

An EOF is not a compression technique per-se, but instead is defined tosignal the end of a compression stream. At a compressor, after all inputdata has been compressed and the last codes of the last qCell have beenemitted, an EOF sequence can be emitted. The EOF is emitted as anattribute plane code.

If the attribute plane is in D1 or D1D run encoding mode, a ME may beemitted to return to normal encoding mode before the EOF is emitted.Additionally, an EOF automatically terminates any active inter-qCell D1or D1D runs on any plane other than the attribute plane.

TABLE 9 Compression Opcode Value EOF 001 1 00 0000 0000

Table 9 provides an example binary encoding for an EOF. After an opcodeof 001, the binary value “10000000000” is emitted. Since the EOF sharesan opcode with D1 compression, this value can be used to differentiatean EOF from a D1 encoding of a pCell.

9. Example Decision Trees

The encoding of pCells and qCells may be based on one or more decisiontrees. Each decision tree illustrates a process through which variousfactors are considered before a pCell or qCell is encoded. There may beseparate decision trees for attribute planes and color planes. Forinstance, it is desirable to not lose any information when compressingan attribute plane. Therefore, attribute planes may be compressed usingvarious lossless compression techniques. On the other hand, it isdesirable to compress some portions of color planes (e.g., vectorgraphics and text portions) in a lossless fashion, but compress otherportions of color planes (e.g., image graphics portions) in a lossyfashion. In this way, details in the original image can be preservedwhen desired, but high compression ratios can still be achieved.

a. Color Plane Decision Tree

FIG. 8 depicts a color plane decision tree 800, in accordance withexample embodiments. This decision tree considers the properties of aqCell, with the understanding that a qCell consists of fournon-overlapping pCells. The sizes of such a qCell and its subsidiarypCells may be 16×16 and 8×8, respectively. However, other sizes may beused instead.

It is assumed that the each pixel in the qCell is tagged with anindication of the type of object of which the pixel is part—e.g., text,vector (e.g., line art), or raster (e.g., image). These tags may residein the attribute plane for the qCell.

Further, decision tree 800 may be used for 1200 dpi and/or 600 dpiimages. However, in some cases, when processing 600 dpi images, the DCTQmethod may be omitted in order to avoid downsampling to 300 dpi. Forinstance, the decision tree for 600 dpi images may include only blocks804, 806, and 808 of FIG. 8.

In each decision block 802, 804, 810, 812, 816, 818, 820, 822, the typeof decision is indicated parenthetically. If the decision is made on aplanar basis, a parenthetical P is present. If the decision is made on acomposite basis, a parenthetical C is present. However, each of thecompression techniques is applied per plane.

Planar decisions are made by considering the qCells and/or pCells ofeach color plane separately. Thus, for instance, a planar decision mayconsider the color properties and/or attributes associated with a singleqCell and/or pCell. However, a composite decision may consider the qCelland pCell properties and associated attributes for all color planes in alocation in the image defined by the qCell.

For purposes of simplicity, D1D and P2D compression are not referencedexplicitly in decision tree 800. However, wherever D1 or P2 compressionare considered or used, D1D and P2D compression may be considered orused as well. Thus, blocks 804 and 806 may consider and use D1D and P2Dcompression, while block 824 may apply D1D compression. Runs ofconsecutive D1 or D1D encodings are also not explicitly considered indecision tree 800, but may be used regardless.

Blocks 802, 810, 816, and 820 each represent composite decisions made onthe basis of a qCell. For each of these decisions, the ranges of valueson all color planes of the qCell are considered, as is the number ofobject types represented by the qCell. To determine whether the range isbroad or narrow, the range of values for each plane may be determined(thus, for instance, if there are three color planes, three ranges aredetermined). Each range may be calculated by taking the difference ofthe highest pixel value in the qCell for that plane, and subtracting thelowest pixel value in the qCell for that plane. If any of these rangesexceeds a predetermined threshold, the range is classified as broad.Otherwise, the range is classified as narrow. The predeterminedthreshold may be 4, 8, 16, 32, or some other value.

Further, a mix of tags indicates that two or more objects meet in aqCell, and therefore the qCell may contain an edge. It is desirable topreserve edges, in order to maintain the sharpness of the image. If all256 tag values of a qCell are the same, then it is unlikely that thereis an edge in the qCell.

A broad range indicates detail worth preserving, while a narrow rangeindicates a good qCell candidate for downsampling. A broad range andmixed tags, taken together, may be evidence of a qCell with an edge. Inthis case, and as reflected by block 802, downsampling should beavoided. When the inquiry of block 802 is answered in the affirmative,block 804 is considered next.

At block 804, the qCells may have edge detail to preserve, so each planeis encoded pCell-by-pCell to best preserve this detail. A pCellqualifies for encoding as a D1, P2, or P4 if it has 1, 2, or 4 colors,respectively. If one of D1, P2, or P4 compression is selected, thistechnique may be applied at block 806. Otherwise DCTP compression may beapplied at block 808. In some embodiments, block 804 may involve thegeneral process of determining whether the respective color values ofthe m×n pixels of each pCell of each color plane include at least dcolors, where d is at least 2.

On the other hand, if the qCell exhibits a broad range and the same tagthroughout, then the inquiry of block 810 is answered in theaffirmative, and block 812 is considered next. On a composite basis, itis determined whether there are 5 or more colors in the qCell, and allof the tags indicate a raster. If this condition is true, then the qCellcontains only image data, and may be compressed using the DCTQ techniqueat block 814. If this condition is not true, the qCell either containstext or line art that should not be downsampled, or contains image datawith a very small number of values. In either case, D1, P2, P4, or DCTPcompression may either be better at preserving the information in theqCell, or may provide a better compression ratio. Thus, the qCell may beconsidered further at block 804, and compressed at either block 806 orblock 808.

Alternatively, if the qCell exhibits a narrow range and mixed tags, theqCell may be a candidate for downsampling, because little informationshould be lost in this process. However, if there are 4 or fewer colorsin the qCell, one of D1, P2, or P4 compression may provide a bettercompression ratio than DCT-based compression.

Accordingly, if the inquiry of block 816 is answered in the affirmative,block 818 is reached. At block 818, it is determined, on a compositebasis, whether the qCell contains 5 or more colors. If so, then theqCell is likely to contain mostly image data, and may be compressedusing the DCTQ technique at block 814. If not, the qCell may beconsidered further at block 804, and compressed at block 806. Since theqCell has 4 or fewer colors, one of D1, P2, or P4 compression will beapplicable, and block 808 might not be reached in this scenario.

If a qCell exhibits a narrow range the same tag throughout, this isstrong evidence of no edge in the qCell. If the inquiry of block 820 isanswered in the affirmative, block 822 may be considered next. At block822, it may be determined whether all pixels in each plane of the qCellhave the same value. If so, using D1 compression will be more efficientthan DCT-based compression. Accordingly, the plane of the qCell may becompressed, on a pCell-by-pCell basis, at block 824. Otherwise, DCTQ isapplied to the plane of the qCell at block 814.

FIG. 8 depicts one possible color plane decision tree. Other suchdecision trees are possible. For instance, when compressing a 600 dpiimage, only blocks 804, 806, and 808 might be used.

b. Attribute Plane Decision Tree

FIG. 9 depicts an attribute plane decision tree 900, in accordance withexample embodiments. This decision tree considers the properties of apCell of an attribute plane, with that understanding that each elementof this attribute plane pCell is associated in a one-to-one fashion witha pixel values of one or more corresponding color plane pCells. The sizeof these pCells may be 8×8, but other sizes may be used instead. It isalso assumed that there is only one attribute plane, so all decisions indecision tree 900 are made on a planar basis. However, alternativeembodiments could take different approaches.

Similar to decision tree 800, D1D and P2D compression are not referencedexplicitly in decision tree 900. However, wherever D1 or P2 compressionis considered or used, D1D and P2D compression may be considered or usedas well. Thus, blocks 902, 904, 906, and 908 may consider and/or use D1Dand P2D compression. Runs of consecutive D1 or D1D encodings are alsonot explicitly considered in decision tree 900, but may be usedregardless.

At block 902, it is determined whether the attribute plane pCellqualifies for D1 compression. If so, D1 compression is applied at block904. Otherwise, at block 906, it is determined whether the pCellqualifies for P2 compression. If so, P2 compression may be applied atblock 908.

If the pCell does not qualify for either D1 or P2 compression, at block910 it may be determined whether the pCell qualifies for P4 compression.If so, P4 compression may be applied at block 912. Otherwise, D64compression may be applied at block 914.

FIG. 9 depicts one possible attribute plane decision tree. Other suchdecision trees are possible.

c. Fallback Mode

In some cases, the behavior of a printing device's pipeline, such as thepipeline of FIG. 6, may be dynamically modified based on variousperformance goals. In particular, a printing device can be configured toenter a fallback mode when either its compression ratio or itsdecompression speed is not meeting pre-established thresholds.

Compression size may be a goal because, as discussed above, the storageof block 616 may be designed to store a small number of pages (e.g., two1200 dpi A3 CMYKA pages). Decompression speed may also be a goal becausethe cell-based decompression of block 618 should not operate more slowlythat the printing device can print the decompressed data.

Accordingly, the printing device may be configured to detect compressionbuffer overflow, and/or decompression speed underruns. A compressionbuffer overflow occurs when the number of bytes written to memory (e.g.,storage of block 616) exceeds a predetermined threshold, indicating thatthe achieved compression ratio is poor. A decompression speed underrunoccurs when the number of DCT encodings qCell per part or all of a pageexceeds a predetermined threshold.

After detecting a compression buffer overflow, the decision trees ofFIGS. 8 and/or 9 may be modified so that compression techniques thatalways achieve at least 4:1 compression are used. For instance, on thecolor planes, the use of P4 compression may be eliminated and replacedwith DCTQ compression for a pCell that would normally be encoded with P4compression, as well as the remaining pCells in the same qCell. In asimilar fashion, DCTP compression may also be replaced by DCTQcompression. On the attribute plane, P4 compression may be replaced withD64 compression when only 1 or 2 bits per attribute element aremaintained.

After detecting a decompression speed underrun, the color plane decisiontree of FIG. 8 may be modified to force no more than t DCT operationsqCell, where t is 1, 2, or 3.

10. Interleaved Encoding

The encoded output of cell-based compression may be interleaved. In somecases, an interleaved encoding may be superior to a non-interleavedencoding.

This interleaving may consider (i) the ordering of pCells and planesacross qCells, (ii) whether downsampling is a planar or compositedecision, and (iii) compression performance. For the latterconsideration, separate DCT compression and pattern (non-DCT)compression processors may be used. It is assumed that the DCTcompression processor will run in parallel with the pattern processor,and that the DCT processor may run much slower, perhaps at one-eighththe speed of the pattern processor. Thus, the interleave format maysupport maintaining high utilization of the DCT processor in variousmixes of DCT and pattern pCells.

Based on these considerations, the qCells and pCells of the attributeplane and color planes may be written to an output medium (e.g., storageof block 606 and/or storage of block 616) in an interleaved fashion. Asan example, if the color model is CMYA, then the ordering of encodedpCells may be an attribute pCell, then a cyan pCell, then a magentapCell, then a yellow pCell, then another attribute pCell, then anothercyan pCell, then another magenta pCell, then another yellow pCell, andso on.

A pseudo-code representation 1000 of such an operation is shown in FIG.10. At line 1 of pseudo-code representation 1000, each composite(multi-planar) qCell in an input image is considered. At line 3, thecomposite qCell is sorted in planar order so that the attribute plane isfirst, the cyan plane is second, the magenta plane is third, the yellowplane is fourth, and the K plane (if present) is fifth.

At lines 4 and 5, each plane of each pCell is considered. At line 7, itis determined whether the planar qCell should be subsampled(downsampled). If, so, then at lines 8-11, a single pCell for the entireplanar qCell is encoded and emitted (e.g. written to the output medium).If the planar qCell is not to be downsampled, then at line 13, each ofits planar pCells (encoded using a non-DCT technique) are emitted.

An example of such an interleaving operation is shown in FIGS. 11A and11B. FIG. 11A depicts a series of four qCells for each of the attribute,cyan, magenta, and yellow planes. Each pCell within a qCell isassociated with a respective pCell ID (e.g., a, b, c, or d), anddepicted as a box. The boxes contain the compression technique used tocompress each respective pCell, as well as the qCell number and pCellID. For example, the first (left-most) pCell of the attribute plane wascompressed using P2 compression and is from pCell 1a.

Throughout the four qCells, the attribute plane is consistently encodedusing P2 compression, the cyan plane is encoded using P4 compression,and the yellow plane is encoded using DCTP compression. The magentaplane, however, is encoded using a mix of P2 and D1 compression.Notably, 13 consecutive, identical pCells of the magenta plane areencoded in a run of D1 compression.

FIG. 11B depicts an interleaved encoding of the pCells and qCells ofFIG. 11A. Each of the color and attribute planes are interleavedone-by-one-by-one-by-one, except for when a run is encoded in a moreefficient fashion. For instance, the encoding begins with the pCells ofthe first qCell. First is the 1a pCell of the attribute plane, then the1a pCell of the cyan plane, the 1a pCell of the magenta plane, the 1apCell of the yellow plane, the 1b pCell of the attribute plane, the 1bpCell of the cyan plane, and so on.

With respect to the run of 13 magenta cells using D1 compression, the7th pCell in the output sequence indicates that a D1 run begins.Particularly, this pCell is one of three pCells in the D1 run that arefrom the first qCell. Thus, this pCell may be encoded using D1compression and may include a length field with a value of 3 to indicatethat it represents three consecutive, identical D1 pCells. Accordingly,the 1b, 1c, and 1d magenta pCells are encoded as a single pCell, and the1c and 1d magenta pCells are omitted from the output sequence.

For the second qCell, the first magenta pCell therein appears in the17th position in the output sequence. However, a D1C encoding is used toindicate that the run of magenta D1 pCells continues through this qCell.Similarly, for the third qCell, the first magenta pCell therein appearsin the 30th position in the output sequence. Here, a D1C encoding isalso used to indicate that the run of magenta D1 pCells continuesthrough this qCell. Other magenta pCells in the second and third qCellsare omitted in this encoding.

In the fourth qCell, the run of magenta D1 pCells continues for two morepCells, and then ends. Therefore, at the 43rd position in the outputsequence, a D1E encoding is used to indicate the end of the D1 run. But,since there actually are two remaining consecutive, identical magenta D1pCells in the run, a second D1 run is encoded. In the 44th position inthe output sequence, a magenta pCell may be encoded using D1compression. This pCell may include a length field with a value of 2 toindicate that it represents two consecutive identical D1 pCells. Thus,the 4b magenta pCell is omitted from the encoding, but the 4c and 4dmagenta pCells are included.

The final encoding, in the 57th output position, is an end-of-file (EOF)used to indicate the end of this section of the compressedrepresentation.

Another example of an interleaving operation is shown in FIGS. 12A and12B. FIG. 12A depicts a series of four qCells for each of the attribute,cyan, magenta, and yellow planes. However, unlike the example of FIGS.11A and 11B, the example of FIG. 12A includes DCTQ encodings, as well asan implicit D1 run.

FIG. 12B depicts an interleaved encoding of the pCells and qCells ofFIG. 12A. Each of the color and attribute planes are interleavedone-by-one-by-one-by-one, except for when a run is encoded in a moreefficient fashion. With respect to the DCTQ encodings, since such anencoding encompasses four actual pCells, only one DCTQ encoding perqCell may be used. Therefore, in FIG. 12B, cyan DCTQ encodings appear atthe 2nd, 13th, 23rd, and 33rd output positions, respectively.

Like FIG. 11B, the run of 13 magenta D1 pCells are compressed into twological runs in FIG. 12B. However, the run of six consecutive, identicalattribute D1 pCells are encoded in a slightly different fashion. Sincethe run begins with the b and d pCells of a qCell, the beginning of therun is considered to be implicit. Thus, these two pCells are encoded asexpected at the 26th and 30th output positions, respectively. However,at the 32nd output position, a D1C encoding is used for the four D1cells of this run that are in the fourth qCell. Then, at the 42nd outputposition, a ME encoding is used to indicate the end of the run, and atthe 43rd output position an EOF encoding is used to indicate the end ofthis section of the compressed representation.

FIGS. 11A, 11B, 12A, and 12B are provided for purposes of illustration.Other encodings may be supported by the embodiments herein, andvariations may be made to these encodings without departing from thescope of the embodiments.

11. Example Cell-Based Decompression

Once a number of pCells and/or qCells are compressed using, for example,the compression methods and encodings discussed above, they may beefficiently stored and/or transmitted over a cable or network.Nonetheless, at some point, the pCells and/or qCells may be decompressedinto the original image or an approximation of the original image. Sincethe cell-based compression techniques described herein can be lossy, thedecompressed image may differ, at least to some extent, from theoriginal image. However, in many scenarios, this difference will eitherbe unlikely to be perceived by a human, or considered to be anacceptable version of the original image.

The pCells and/or qCells encoded with the compression encodingsdescribed above can be decoded and decompressed as follows. For aparticular pCell or qCell encoding, the opcode is read. Based on thevalue of the opcode, any applicable options, arguments, bitmaps, etc.,can be determined from the bits following the opcode. From theseparameters, a decompressed version of the pCell or qCell can bereconstructed. Then, the next opcode is read and so on until the imageis reconstructed.

For example, if the opcode is 001, indicating D1 encoding, the V′ bitand the arguments field may be read to determine the value of thecompressed element. The length bits may also be read to determinewhether a run length is present. Then, a number of cells commensuratewith the run length are created with all pixels in each cell exhibitingthe value indicated by the value field in the encoding, or in a cachedversion of the value field.

If the opcode is 000, indicating D1D encoding, the V bit may be read todetermine the value of the compressed element, and the length bits maybe read to determine whether a run length is present. Then, a number ofcells commensurate with the run length are created with all pixels ineach cell exhibiting the default value indicated by the V bit.

If the opcode is 011, indicating P2 encoding, the options, arguments,and bitmap may be read. If the V′ bit is 1, the two values in the cellmay be determined. Then, a cell may be created with each pixel taking onone of the two values in accordance with the line map and the bitmap. Ifthe line map is not present, then the line map and bit map from theprevious P2 cell are used.

If the opcode is 010, indicating P2D compression, a cell may be createdwith each pixel taking on one of the two values in accordance with theline map and the bitmap. If the line map is not present, then the linemap and bitmap from the previous P2 cell are used.

If the opcode is 100, indicating P4 compression, the line map and valuesarguments may be read, as well as the bitmap. Then, a cell may becreated with each pixel taking on one of the four color values inaccordance with the line map and bitmap.

If the opcode is 11, indicating DCTP compression, the bitmap of the DCTPcompression method may be read and a cell may be created in accordancewith this DCTP encoding.

If the opcode is 101, indicating DCTQ compression, the bitmap of theDCTQ compression method may be read and a pCell may be created inaccordance with this DCTQ encoding. Then, each element in pCell may bereplaced by a 2×2 block of elements with the same value. The result is aqCell that is an approximate reversal of the DCTQ downsampling process.

If the opcode is 1, indicating D1C compression, then the most recent D1or D1D cell is copied. If the opcode is 0, indicating D1E compression,the current D1 or D1D run is considered to have ended.

If the opcode is 11, indicating D64 compression, the number of bits perattribute is determined, and then the attributes field is decodedaccordingly. The number of bits per attribute may depend on the type ofprinting device and where in the pipeline that the decompression isoccurring.

12. Example Performance Results

Compression performance of the cell-based compression (CBC) techniquesdisclosed herein were compared to that of JPEG-based compression andsplit run length encoding (SRLE) based compression (a losslesstechnique). The test suite consisted of 408 pages with varying amountsof text, line art, and image content.

TABLE 10 Resolution 600 dpi 1200 dpi Algorithm CBC JPEG SRLE CBC JPEGSRLE Max 606.9:1 84.6:1 158.3:1 1032.2:1 140.8:1 199.7:1 Min 6.2:1 9.6:11.7:1 23.0:1 12.5:1 3.1:1 Average 62.1:1 33.4:1 13.7:1 171.9:1 61.8:122.2:1 Median 39.1:1 32.6:1 8.6:1 138.5:1 63.1:1 12.6:1

Table 10 provides the compression ratios achieved by CBC, JPEG, and SRLEfor both 600 dpi and 1200 dpi images. These results include the maximum,minimum, average, and median compression ratios achieved for eachtechnique.

The CBC technique disclosed herein provides the best maximum compressionratio for both 600 dpi and 1200 dpi images by quite a margin. The CBCtechnique also provides the best minimum compression ratio for 1200 dpiimages, but the JPEG technique provides a slightly better minimumcompression ratio for 600 dpi images.

More importantly, the CBC technique disclosed herein providessignificantly better average and median compression ratios than JPEG andSRLE, while providing superior image quality over that of JPEG.Consequently, the CBC technique is a significant improvement in printingand printing device technology.

13. Example Operations

FIGS. 13, 14, and 15 are flow charts of example embodiments. The stepsillustrated by these flow charts may be carried out by one or moreprinting devices, such as printing device 100, and/or computing devices,such as computing device 300. Further, aspects of each individual stepmay be distributed between multiple computing or printing devices.

With respect to the terms used herein, an m×n attribute cell may referto a planar pCell of the attribute plane, and an m×n pixel cell mayrefer to a planar pCell of a color plane. Further, an a×b attribute cellmay refer to a planar qCell of the attribute plane, and an a×b pixelcell may refer to a planar qCell of a color plane. It is assumedthroughout that a is greater than m and b is greater than n.

FIG. 13 generally depicts steps for interleaved compression of cells ofan attribute plane and cells of one or more color planes. However, thesesteps may be used for additional purposes as well. Operations discussedin reference to FIGS. 5-12B may be explicitly or implicitly referencedin this flow chart. For instance, the steps of FIG. 13 could take placeat blocks 604 and/or 614 of FIG. 6, in other locations of a printingdevice's pipeline, or by a host computer.

At step 1300, an m×n pixel cell from an input image may be obtained. Theinput image may contain more than m×n pixels, and each of the m×n pixelsin the m×n pixel cell may be associated with at least one color value.

At step 1302, possibly based on the m×n pixel cell, an m×n attributecell may be obtained. Elements of the m×n attribute cell may beassociated in a one-to-one fashion with respective pixels in the m×npixel cell, and the elements may identify respective control datarelated to their associated pixels. The attribute cell elements may beattribute arrays and/or attribute bytes.

At step 1304, the m×n pixel cell may be compressed in a lossy fashion,and the m×n attribute cell may be compressed in a lossless fashion. Thelossy compression may be DCT-based compression, and the losslesscompression may be any of the other compression techniques describedherein. Compression of the m×n pixel cell may be based on at least partof the m×n attribute cell (e.g., the compression may depend upon thetype of object(s) that the m×n pixel cell represents, as encode by them×n attribute cell). At step 1306, an interleaved representation of thecompressed m×n pixel cell and the compressed m×n attribute cell may bewritten to an output medium. This interleaved representation may take aform in accordance with the disclosure of FIGS. 11A, 11B, 12A, and 12B,or another form.

In some embodiments, a unit of the control data may be associated with aparticular pixel in the m×n pixel cell. The control data may be one ormore bits indicating whether the particular pixel represents an imageobject type, a vector object type, or a text object type. The compressedm×n pixel cell and the compressed m×n attribute cell may bedecompressed, and a halftone screen may be selected based on the one ormore bits. The m×n pixel cell may be printed (possibly along with therest of the input image) with the selected halftone screen applied tothe particular pixel.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating whether the particular pixel was formed as part of a printingprocedure or a scanning procedure. The compressed m×n pixel cell and thecompressed m×n attribute cell may be decompressed, and halftone screenmay be selected based on the one or more bits. The m×n pixel cell may beprinted (possibly along with the rest of the input image) with theselected halftone screen applied to the particular pixel.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating that the particular pixel took on neutral color values beforecompression. The compressed m×n pixel cell and the compressed m×nattribute cell may be decompressed. Possibly as a result of the one ormore bits indicating that the particular pixel took on neutral colorvalues before compression, it may be determined that color values of theparticular pixel are not identical, and at least one of the color valuesmay be changed so that the color values are identical.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating that the particular pixel took on non-neutral color valuesbefore compression. The compressed m×n pixel cell and the compressed m×nattribute cell may be decompressed. Possibly as a result of the one ormore bits indicating that the particular pixel took on non-neutral colorvalues before compression, it may be determined that color values of theparticular pixel are identical, and at least one of the color values maybe changed so that the color values are not identical.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating that the particular pixel took on identical pure extremecolor values before compression. The compressed m×n pixel cell and thecompressed m×n attribute cell may be decompressed. Possibly as a resultof the one or more bits indicating that the particular pixel took onidentical pure extreme color values before compression, it may bedetermined that color values of the particular pixel are not theidentical pure extreme color values, and at least one of the colorvalues may be changed so that the color values are the identical pureextreme color values.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating whether the particular pixel is to be overlaid with a digitalobject. Compressing the m×n pixel cell in the lossy fashion may involveselecting either (i) the particular pixel, or (ii) a replacement pixelfrom the digital object, and compressing the selected pixel. Theselection may be based on the one or more bits. In some cases, the oneor more bits may be omitted from the lossless compression of the m×nattribute cell.

Alternatively or additionally, the control data associated with aparticular pixel in the m×n pixel cell may contain one or more bitsindicating whether a particular color conversion is to be applied to theparticular pixel. Before compressing the m×n pixel cell in the lossyfashion, the particular pixel may be converted from one color model toanother color model based on the particular color conversion. In somecases, the one or more bits may be omitted from the lossless compressionof the m×n attribute cell.

Compressing the m×n attribute cell in the lossless fashion may involvedetermining that each element of the m×n attribute cell takes on thesame value, and possibly based on this determination, encoding the m×nattribute cell using a single-value opcode (e.g., using D1 or D1Dcompression) and an indication of the same value. Alternatively,compressing the m×n attribute cell in the lossless fashion may involvedetermining that each element of the m×n attribute cell takes on one oftwo different values, and possibly based on this determination, encodingthe m×n attribute cell using a two-value opcode (e.g., using P2 or P2Dcompression), an indication of the two different values, and a bitmapindicating which elements take on each of the two different values.

In yet another aspect, compressing the m×n attribute cell in thelossless fashion may involve determining that each element of the m×nattribute cell takes on one of three or four different values, andpossibly based on this determination, encoding the m×n attribute cellusing a four-value opcode (e.g., using P4 compression), an indication ofthe three or four different values, and a bitmap indicating whichelements take on each of the three or four different values. In anotheralternative, compressing the m×n attribute cell in the lossless fashionmay involve determining that the elements of the m×n attribute cell takeon at least five different values, and possibly based on thisdetermination, encoding the m×n attribute cell using a multi-valueopcode (e.g., using D64 compression) and indications of values taken onby each of the elements of the m×n attribute cell.

FIG. 14 generally depicts steps for compression of cells of a colorplane. However, these steps may be used for additional purposes as well.Operations discussed in reference to FIGS. 5-12B may be explicitly orimplicitly referenced in this flow chart. For instance, the steps ofFIG. 14 could take place at blocks 604 and/or 614 of FIG. 6, in otherlocations of a printing device's pipeline, or by a host computer.

Since this flow chart involves the compression of a single color plane,decisions (such as the decisions of color plane decision tree 800) aretaken on a planar basis. Nonetheless, the steps in FIG. 14 could beperformed as part of a composite operation that considers multiple colorplanes simultaneously.

At step 1400, an a×b pixel macro-cell from an input image may beobtained. The a×b pixel macro-cell may contain 4 non-overlapping m×npixel cells. The a×b pixels in the a×b pixel macro-cell may haverespective color values, and may be associated with respective objecttype tags. These object type tags may each be, for example, one or morebits of an attribute array.

At step 1402, possibly based on the respective color values and therespective object type tags, a compression technique may be selected toeither (i) compress the a×b pixel macro-cell as a whole, or (ii)compress the a×b pixel macro-cell by compressing each of the 4non-overlapping m×n pixel cells separately.

At step 1404, the a×b pixel macro-cell may be compressed according tothe selected compression technique. At step 1406, a representation ofthe compressed a×b pixel macro-cell may be written to acomputer-readable output medium.

In some embodiments, the selected compression technique compresses thea×b pixel macro-cell as a whole. This process may involve downsamplingthe a×b pixel macro-cell to a downsampled m×n pixel cell, andcompressing the downsampled m×n pixel cell in a lossy fashion (e.g.,using DCTQ compression).

When the a×b pixel macro-cell is compressed as a whole, selecting thecompression technique may include (i) determining that a range of therespective color values of the a×b pixels exceeds a predeterminednon-zero threshold value, (ii) determining that the respective objecttype tags for the a×b pixels indicate that the a×b pixels each representthe same object type, (iii) determining that the respective color valuesof the a×b pixels include at least d colors, where d is at least 2, and(iv) selecting to compress the a×b pixel macro-cell as a whole.

Alternatively, when the a×b pixel macro-cell is compressed as a whole,selecting the compression technique may include (i) determining that arange of the respective color values of the a×b pixels is within apredetermined non-zero threshold value, (ii) determining that therespective object type tags for the a×b pixels indicate that some of thea×b pixels represent different object types, (iii) determining that therespective color values of the a×b pixels include at least d colors,where d is at least 2, and (iv) selecting to compress the a×b pixelmacro-cell as a whole.

In another alternative, when the a×b pixel macro-cell is compressed as awhole, selecting the compression technique may include (i) determiningthat a range of the respective color values of the a×b pixels is withina predetermined non-zero threshold value, (ii) determining that therespective object type tags for the a×b pixels indicate that the a×bpixels each represent an identical object type, (iii) determining thatthe respective color values of the a×b pixels include more than onecolor, and (iv) selecting to compress the a×b pixel macro-cell as awhole.

In additional embodiments, the selected compression technique compresseseach of the 4 non-overlapping m×n pixel cells separately in a losslessfashion (e.g., using D1, D1D, P2, P2D, or P4 compression).

When the 4 non-overlapping m×n pixel cells are compressed separately ina lossless fashion, selecting the compression technique may involve (i)determining that a range of the respective color values of the a×bpixels exceeds a predetermined non-zero threshold value, (ii)determining that the respective object type tags for the a×b pixelsindicate that the a×b pixels each represent the same object type, (iii)determining that the respective color values for each of the one or morem×n pixel cells include less than d colors, where d is at least 2, and(iv) selecting to compress each of the one or more m×n pixel cellsseparately in a lossless fashion.

Alternatively, selecting the compression technique may involve (i)determining that a range of the respective color values of the a×bpixels is within a predetermined non-zero threshold value, (ii)determining that the respective object type tags for the a×b pixelsindicate that some the a×b pixels represent different object types,(iii) determining that the respective color values for each of the oneor more m×n pixel cells include less than d colors, where d is at least2, and (iv) selecting to compress each of the one or more m×n pixelcells separately in a lossless fashion.

In another alternative, selecting the compression technique may involve(i) determining that a range of the respective color values of the a×bpixels exceeds a predetermined non-zero threshold value, (ii)determining that the respective object type tags for the a×b pixelsindicate that some the a×b pixels represent different object types,(iii) determining that the respective color values for each of the oneor more m×n pixel cells include less than d colors, where d is at least2, and (iv) selecting to compress each of the one or more m×n pixelcells separately in a lossless fashion.

In yet another alternative, selecting the compression technique mayinvolve (i) determining that a range of the respective color values ofthe a×b pixels is within a predetermined non-zero threshold value, (ii)determining that the respective object type tags for the a×b pixelsindicate that the a×b pixels represent an identical object type, (iii)determining that the respective color values of the a×b pixels eachrepresent an identical color value, and (iv) selecting to compress eachof the 4 non-overlapping m×n pixel cells separately in a losslessfashion.

In some embodiments, the selected compression technique may compress oneor more m×n pixel cells of the 4 non-overlapping m×n pixel cellsseparately in a lossy fashion (e.g., DCTP compression).

When the 4 non-overlapping m×n pixel cells are compressed separately ina lossy fashion, selecting the compression technique may involve (i)determining that a range of the respective color values of the a×bpixels exceeds a predetermined non-zero threshold value or that therespective object type tags for the a×b pixels indicate that some thea×b pixels represent different object types, (ii) determining that therespective color values for the a×b pixels include less than 5 colors,(iii) determining that the respective color values for each of the oneor more m×n pixel cells include at least d colors, where d is at least2, and (iv) selecting to compress each of the one or more m×n pixelcells separately in a lossy fashion.

The compressed a×b pixel macro-cell may be decompressed by reversing thecompression technique used to compress the a×b pixel macro-cell. Thus,decompressing the compressed a×b pixel macro-cell may result in a seconda×b pixel macro-cell, and pixel values of the second a×b pixelmacro-cell may be either identical to or may approximate the pixelvalues of the a×b pixel macro-cell.

In some embodiments, a second a×b pixel macro-cell and a third a×b pixelmacro-cell may be obtained from the input image. The second and thirda×b pixel macro-cells may each contain 4 non-overlapping m×n pixelcells, and the pixels in each of the second and third a×b pixelmacro-cells may also have respective color values and may also beassociated with the respective object type tags. In these embodiments, acompression technique may be selected to compress each of the second andthird a×b pixel macro-cells by compressing each of the 4 non-overlappingm×n pixel cells of the second a×b pixel macro-cell and the 4non-overlapping m×n pixel cells of the third a×b pixel macro-cellseparately from one another and from the 4 non-overlapping m×n pixelcells of the a×b pixel macro-cell. Accordingly, each of the 4non-overlapping m×n pixel cells of the second a×b pixel macro-cell andthe 4 non-overlapping m×n pixel cells of the third a×b pixel macro-cellmay be compressed separately from one another and from the 4non-overlapping m×n pixel cells of the a×b pixel macro-cell.Representations of the compressed second a×b pixel macro-cell and thecompressed third a×b pixel macro-cell may be written to thecomputer-readable output medium.

FIG. 15 generally depicts steps for interleaving compressedrepresentations of cells from an attribute plane and one or more colorplanes. However, these steps may be used for additional purposes aswell. Operations discussed in reference to FIGS. 5-12B may be explicitlyor implicitly referenced in this flow chart. For instance, the steps ofFIG. 15 could take place at blocks 604 and/or 614 of FIG. 6, in otherlocations of a printing device's pipeline, or by a host computer.

At step 1500, an a×b pixel macro-cell may be obtained from an inputimage with one or more color planes. An a×b attribute macro-cell mayalso be obtained. The a×b pixel macro-cell may contain 4 non-overlappingm×n pixel cells, and the a×b attribute macro-cell may contain 4non-overlapping m×n attribute cells. The a×b pixels in the a×b pixelmacro-cell may be associated with respective color values, and elementsof the a×b attribute macro-cell may be associated in a one-to-onefashion with respective pixels in the a×b pixel macro-cell.

At step 1502, 4 attribute-plane output values associated respectivelywith the 4 non-overlapping m×n attribute cells may be determined. Atstep 1504, 1 to 4 color-plane output values for the non-overlapping m×npixel cells may be determined. At step 1506, an interleavedrepresentation of the 4 attribute-plane output values and the determinedcolor-plane output values may be written to a computer-readable outputmedium. This interleaved representation may take a form in accordancewith the disclosure of FIGS. 11A, 11B, 12A, and/or 12B, or another form.

Further, a second a×b pixel macro-cell may also be obtained from theinput image. The second a×b pixel macro-cell may contain a second set of4 non-overlapping m×n pixel cells, where the a×b pixels in the seconda×b pixel macro-cell are also associated with respective color values,and where elements of the a×b attribute macro-cell are associated in aone-to-one fashion with respective pixels in the second a×b pixelmacro-cell. A third a×b pixel macro-cell may also be obtained from theinput image. The third a×b pixel macro-cell may contain a third set of 4non-overlapping m×n pixel cells, where the a×b pixels in the third a×bpixel macro-cell are also associated with respective color values, andwhere elements of the a×b attribute macro-cell are associated in aone-to-one fashion with respective pixels in the third a×b pixelmacro-cell. The operations may further involve determining a second setof 1 to 4 color-plane output values for the second set of 4non-overlapping m×n pixel cells, and determining a third set of 1 to 4color-plane output values for the third set of 4 non-overlapping m×npixel cells. The interleaved representation may also include thedetermined second set of 1 to 4 color-plane output values and thedetermined third set of 1 to 4 color-plane output values.

In some embodiments, each of the attribute-plane output values andcolor-plane output values contain respective opcodes and data. Further,the 4 attribute-plane output values may be determined based on losslesscompression of the respective 4 non-overlapping m×n attribute cells(e.g., using D1, DID, P2, P2D, P4, or D64 compression).

In some cases, determining the color-plane output values for thenon-overlapping m×n pixel cells may involve determining that each of the4 non-overlapping m×n pixel cells are compressed separately in a lossyor lossless fashion (e.g., using D1, DID, P2, P2D, P4, or DCTPcompression), and determining 4 color-plane output values, onecolor-plane output value for each of the 4 non-overlapping m×n pixelcells. Alternatively, determining the color-plane output values for thenon-overlapping m×n pixel cells may involve determining that the a×bpixel macro-cell is downsampled and compressed in a lossy fashion (e.g.,using DCTQ compression), and determining one output value for thedownsampled and compressed a×b pixel macro-cell.

In some embodiments, at least 2 color-plane output values are determined(e.g., using D1, D1D, P2, or P2D compression). Writing the interleavedrepresentation of the 4 attribute-plane output values and the determinedcolor-plane output values may involve determining that a firstcolor-plane output value and a second color-plane output value of thecolor-plane output values are losslessly compressed in the same fashion,and representing the first color-plane output value with an opcode, acache miss indicator, and a data field, and representing the secondcolor-plane output value with the opcode and a cache hit indicator. Thecache hit indicator may indicate that the second color-plane outputvalue uses the data field of the first color-plane output value.

Alternatively or additionally, writing the interleaved representation ofthe 4 attribute output values and the determined color-plane outputvalues may involve determining that a particular color-plane outputvalue of the color-plane output values is losslessly compressed using(i) an n−1 bit line map, (ii) a first m-bit line, and (iii) for each bitin the n−1 bit line map that takes on a value of 1, another respectivem-bit line. Then, the particular color-plane output value may berepresented with an opcode, at least 2 different pixel values, the n−1bit line map, the first m-bit line, and the respective m-bit lines(e.g., using P2 compression).

In other cases, writing the interleaved representation of the 4attribute output values and the determined color-plane output values mayinvolve determining that a particular color-plane output value of thecolor-plane output values is losslessly compressed using (i) an n−1 bitline map, (ii) a first 2-bit line, and (iii) for each bit in the n−1 bitline map that takes on a value of 1, another respective 2-bit line.Then, the particular color-plane output value may be represented with anopcode, at least 4 different pixel values, the n−1 bit line map, thefirst 2-bit line, and the respective 2-bit lines (e.g., using P4compression).

In some embodiments, writing the interleaved representation of the 4attribute output values and the determined color-plane output values mayinvolve determining that a first output value and a second output valueare to be represented on the computer-readable output medium, and thatthe m×n cells associated with the first output value and the secondoutput value to be represented with identical bitmaps (e.g., using P2compression with caching). Then, the second output value may berepresented with an opcode, two or more color values, and a reference toa first bitmap of the first output value, where the second output valuedoes not include a dedicated bitmap.

Moreover, writing the interleaved representation of the 4 attributeoutput values and the determined color-plane output values may involvedetermining that (i) p of the 4 non-overlapping m×n pixel cells arelosslessly compressed in an identical fashion, and (ii) contain colorvalues in identical locations as one another, where p is 1, 2, 3, or 4(e.g., a run of D1 pCells within a qCell). Then, the determinedcolor-plane output values may be represented as at least an opcode and avalue of p.

In some situations, writing the interleaved representation of the 4attribute output values and the determined color-plane output values mayinvolve determining that the 4 non-overlapping m×n pixel cells arelosslessly compressed in an identical fashion as one another and apreviously-written m×n pixel cell of the same color plane. Then, thedetermined color-plane output values may be represented as an opcodeindicating that the determined color-plane output values are a run ofidentical encodings (e.g., using D1C compression). Writing theinterleaved representation of the 4 attribute output values and thedetermined color-plane output values may further involve determiningthat p of the 4 non-overlapping m×n pixel cells (i) are losslesslycompressed in an identical fashion as previous m×n pixel cells writtento the computer-readable output medium, where the previous m×n pixelcells were represented as the run of identical encodings, and (ii) areto be written to the computer-readable output medium before anyremaining 4-p non-overlapping m×n pixel cells, where p is 0, 1, 2, or 3.Then, determined color-plane output values may be represented as (i) afirst opcode indicating an end to the run of identical encodings (e.g.,using a ME encoding), and (ii) when p is greater than 0, a second opcodeand a value of p (e.g., a run of D1 pCells within a qCell).

14. Conclusion

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its spirit and scope, as will be apparentto those skilled in the art. Functionally equivalent methods andapparatuses within the scope of the disclosure, in addition to thoseenumerated herein, will be apparent from the foregoing descriptions.Such modifications and variations are intended to fall within the scopeof the appended claims.

With respect to any or all of the ladder diagrams, scenarios, and flowcharts in the figures and as discussed herein, each block and/orcommunication may represent a processing of information and/or atransmission of information in accordance with example embodiments.Alternative embodiments may be included within the scope of such exampleembodiments. Further, more or fewer blocks and/or functions may be usedwith any of the ladder diagrams, scenarios, and flow charts discussedherein, and these ladder diagrams, scenarios, and flow charts may becombined with one another, in part or in whole.

A step or block that represents a processing of information maycorrespond to circuitry that can be configured to perform the specificlogical functions of a herein-described method or technique.Alternatively or additionally, a step or block that represents aprocessing of information may correspond to a module, a segment, or aportion of program code (including related data). The program code mayinclude one or more instructions executable by a processor forimplementing specific logical functions or actions in the method ortechnique. The program code and/or related data may be stored on anytype of computer-readable medium, such as a storage device, including adisk drive, a hard drive, or other storage media.

The computer-readable medium may also include non-transitorycomputer-readable media such as computer-readable media that stores datafor short periods of time like register memory, processor cache, and/orrandom access memory (RAM). The computer-readable media may also includenon-transitory computer-readable media that stores program code and/ordata for longer periods of time, such as secondary or persistent longterm storage, like read only memory (ROM), optical or magnetic disks,and/or compact-disc read only memory (CD-ROM), for example. Thecomputer-readable media may also be any other volatile or non-volatilestorage systems. A computer-readable medium may be considered acomputer-readable storage medium, for example, and/or a tangible storagedevice.

Additionally, any enumeration of elements, blocks, or steps in thisspecification, the drawings, or the claims is for purposes of clarity.Thus, such enumeration should not be interpreted to require or implythat these elements, blocks, or steps adhere to a particular arrangementor are carried out in a particular order.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopeand spirit being indicated by the following claims.

We claim:
 1. A method comprising: obtaining, by a computing device, ana×b pixel macro-cell from an input image, wherein the a×b pixelmacro-cell contains 4 non-overlapping m×n pixel cells, and wherein thea×b pixels in the a×b pixel macro-cell have respective color values andare associated with respective object type tags; based on the respectivecolor values and the respective object type tags, selecting, by thecomputing device, a compression technique to either (i) compress the a×bpixel macro-cell as a whole, or (ii) compress the a×b pixel macro-cellby compressing each of the 4 non-overlapping m×n pixel cells separately;compressing, by the computing device, the a×b pixel macro-cell accordingto the selected compression technique; and writing, by the computingdevice, a representation of the compressed a×b pixel macro-cell to acomputer-readable output medium.
 2. The method of claim 1, wherein theselected compression technique compresses the a×b pixel macro-cell as awhole, and wherein compressing the a×b pixel macro-cell as a wholecomprises: downsampling the a×b pixel macro-cell to a downsampled m×npixel cell; and compressing the downsampled m×n pixel cell in a lossyfashion.
 3. The method of claim 2, wherein selecting the compressiontechnique comprises (i) determining that a range of the respective colorvalues of the a ×b pixels exceeds a predetermined non-zero thresholdvalue, (ii) determining that the respective object type tags for the a×bpixels indicate that the a×b pixels each represent the same object type,(iii) determining that the respective color values of the a ×b pixelsinclude at least d colors, wherein d is at least 2, and (iv) selectingto compress the a×b pixel macro-cell as a whole.
 4. The method of claim2, wherein selecting the compression technique comprises (i) determiningthat a range of the respective color values of the a ×b pixels is withina predetermined non-zero threshold value, (ii) determining that therespective object type tags for the a×b pixels indicate that some of thea×b pixels represent different object types, (iii) determining that therespective color values of the a ×b pixels include at least d colors,wherein d is at least 2, and (iv) selecting to compress the a×b pixelmacro-cell as a whole.
 5. The method of claim 2, wherein selecting thecompression technique comprises (i) determining that a range of therespective color values of the a ×b pixels is within a predeterminednon-zero threshold value, (ii) determining that the respective objecttype tags for the a×b pixels indicate that the a×b pixels each representan identical object type, (iii) determining that the respective colorvalues of the a×b pixels include more than one color, and (iv) selectingto compress the a×b pixel macro-cell as a whole.
 6. The method of claim1, wherein the selected compression technique compresses one or more m×npixel cells of the 4 non-overlapping m×n pixel cells separately in alossless fashion.
 7. The method of claim 6, wherein selecting thecompression technique comprises (i) determining that a range of therespective color values of the a ×b pixels exceeds a predeterminednon-zero threshold value, (ii) determining that the respective objecttype tags for the a×b pixels indicate that the a×b pixels each representthe same object type, (iii) determining that the respective color valuesfor each of the one or more m×n pixel cells include less than d colors,wherein d is at least 2, and (iv) selecting to compress each of the oneor more m×n pixel cells separately in a lossless fashion.
 8. The methodof claim 6, wherein selecting the compression technique comprises (i)determining that a range of the respective color values of the a ×bpixels is within a predetermined non-zero threshold value, (ii)determining that the respective object type tags for the a×b pixelsindicate that some the a×b pixels represent different object types,(iii) determining that the respective color values for each of the oneor more m×n pixel cells include less than d colors, wherein d is atleast 2, and (iv) selecting to compress each of the one or more m×npixel cells separately in a lossless fashion.
 9. The method of claim 6,wherein selecting the compression technique comprises (i) determiningthat a range of the respective color values of the a ×b pixels exceeds apredetermined non-zero threshold value, (ii) determining that therespective object type tags for the a×b pixels indicate that some thea×b pixels represent different object types, (iii) determining that therespective color values for each of the one or more m×n pixel cellsinclude less than d colors, wherein d is at least 2, and (iv) selectingto compress each of the one or more m×n pixel cells separately in alossless fashion.
 10. The method of claim 6, wherein selecting thecompression technique comprises (i) determining that a range of therespective color values of the a ×b pixels is within a predeterminednon-zero threshold value, (ii) determining that the respective objecttype tags for the a×b pixels indicate that the a×b pixels represent anidentical object type, (iii) determining that the respective colorvalues of the a×b pixels each represent an identical color value, and(iv) selecting to compress each of the 4non-overlapping m×n pixel cellsseparately in a lossless fashion.
 11. The method of claim 1, wherein theselected compression technique compresses one or more m×n pixel cells ofthe 4 non-overlapping m×n pixel cells separately in a lossy fashion. 12.The method of claim 11, wherein selecting the compression techniquecomprises (i) determining that a range of the respective color values ofthe a ×b pixels exceeds a predetermined non-zero threshold value or thatthe respective object type tags for the a×b pixels indicate that somethe a×b pixels represent different object types, (ii) determining thatthe respective color values for the a×b pixels include less than 5colors, (iii) determining that the respective color values for each ofthe one or more m×n pixel cells include at least d colors, wherein d isat least 2, and (iv) selecting to compress each of the one or more m×npixel cells separately in a lossy fashion.
 13. The method of claim 1,further comprising: decompressing the compressed a×b pixel macro-cell byreversing the compression technique used to compress the a×b pixelmacro-cell, wherein decompressing the compressed a×b pixel macro-cellresults in a second a×b pixel macro-cell, and wherein pixel values ofthe second a×b pixel macro-cell are either identical to or approximatethe pixel values of the a×b pixel macro-cell.
 14. The method of claim 1,further comprising: obtaining a second a×b pixel macro-cell and a thirda×b pixel macro-cell from the input image, wherein the second and thirda×b pixel macro-cells each contain 4non-overlapping m×n pixel cells, andwherein the pixels in each of the second and third a×b pixel macro-cellsalso have respective color values and are also associated with therespective object type tags; selecting a compression technique tocompress each of the second and third a×b pixel macro-cells bycompressing each of the 4 non-overlapping m×n pixel cells of the seconda×b pixel macro-cell and the 4 non-overlapping m×n pixel cells of thethird a×b pixel macro-cell separately from one another and from the 4non-overlapping m×n pixel cells of the a×b pixel macro-cell; compressingeach of the 4 non-overlapping m×n pixel cells of the second a×b pixelmacro-cell and the 4 non-overlapping m×n pixel cells of the third a×bpixel macro-cell separately from one another and from the 4non-overlapping m×n pixel cells of the a×b pixel macro-cell; and writingrepresentations of the compressed second a×b pixel macro-cell and thecompressed third a×b pixel macro-cell to the computer-readable outputmedium.
 15. An article of manufacture including a non-transitorycomputer-readable medium, having stored thereon program instructionsthat, upon execution by a computing device, cause the computing deviceto perform operations comprising: obtaining an a×b pixel macro-cell froman input image, wherein the a×b pixel macro-cell contains 4non-overlapping m×n pixel cells, and wherein the a×b pixels in the a×bpixel macro-cell have respective color values and are associated withrespective object type tags; based on the respective color values andthe respective object type tags, selecting a compression technique toeither (i) compress the a×b pixel macro-cell as a whole, or (ii)compress the a×b pixel macro-cell by compressing each of the 4non-overlapping m×n pixel cells separately; compressing the a×b pixelmacro-cell according to the selected compression technique; and writinga representation of the compressed a×b pixel macro-cell to acomputer-readable output medium.
 16. The article of manufacture of claim15, wherein the selected compression technique compresses the a×b pixelmacro-cell as a whole, and wherein compressing the a×b pixel macro-cellas a whole comprises: downsampling the a×b pixel macro-cell to adownsampled m×n pixel cell; and compressing the downsampled m×n pixelcell in a lossy fashion.
 17. The article of manufacture of claim 15,wherein the selected compression technique compresses each of the 4non-overlapping m×n pixel cells separately in a lossless fashion.
 18. Acomputing device comprising: at least one processor; memory; and programinstructions, stored in the memory, that upon execution by the at leastone processor cause the computing device to perform operationscomprising: obtaining an a×b pixel macro-cell from an input image,wherein the a×b pixel macro-cell contains 4 non-overlapping m×n pixelcells, and wherein the a×b pixels in the a×b pixel macro-cell haverespective color values and are associated with respective object typetags; based on the respective color values and the respective objecttype tags, selecting a compression technique to either (i) compress thea×b pixel macro-cell as a whole, or (ii) compress the a×b pixelmacro-cell by compressing each of the 4 non-overlapping m×n pixel cellsseparately; compressing the a×b pixel macro-cell according to theselected compression technique; and writing a representation of thecompressed a×b pixel macro-cell to a computer-readable output medium.19. The computing device of claim 18, wherein the selected compressiontechnique compresses the a×b pixel macro-cell as a whole, and whereincompressing the a×b pixel macro-cell as a whole comprises: downsamplingthe a×b pixel macro-cell to a downsampled m×n pixel cell; andcompressing the downsampled m×n pixel cell in a lossy fashion.
 20. Thecomputing device of claim 18, wherein the selected compression techniquecompresses each of the 4 non-overlapping m×n pixel cells separately in alossless fashion.